Ios操作

界面操作

快捷键

command + c 复制

command+v 粘贴

command +a 全选

command +s 保存

command +z 撤销

command +x  剪切

command +space  输入法的切换

command +<—(退格键)   删除光标所在行,光标前的所有内容

option键(ios)--alt(windows)键

command在Windows键盘中就是windows键

Linux命令

cd

cd:change directory 切换目录

liuzw@ubuntu:~/sunjie$ cd c
liuzw@ubuntu:~/sunjie/c$

cd  ~ 或者直接输入cd,是切换到当前用户的主目录

liuzw@ubuntu:~/sunjie/c$ cd
liuzw@ubuntu:~$

cd  -  撤销上一次的cd操作

liuzw@ubuntu:~/sunjie$ cd c
liuzw@ubuntu:~/sunjie/c$ cd
liuzw@ubuntu:~$ cd -
/home/liuzw/sunjie/c
liuzw@ubuntu:~/sunjie/c$

cd / 回到根目录

cd .. 回到父目录

liuzw@ubuntu:~/sunjie/c$ cd ..
liuzw@ubuntu:~/sunjie$

pwd:print workdirectory查看当前工作路径

liuzw@ubuntu:~/sunjie$ pwd
/home/liuzw/sunjie

ls: list source 查看当前工作路径下的资源,包括文件及目录

ls –a(all) 查看所有资源,包括隐藏的

ls –l(list one file per line)

红色圈住的第一列表示资源类型,其中的d表示目录,-表示文件

红色圈住的第二列表示占用磁盘空间大小

mkdir : make directory 创建目录

mkdir –p 当父目录不存在时,就创建父目录,而不是报错

touch 一般用来创建空文件

echo 回显数据 输出变量

$? 表示上一次命令的执行结果,0表示执行正确,其他的表示错误,如上图示

cp :copy

拷贝文件

拷贝目录

cat 显示文件内容,只能看文件,不能看目录

cat –n 显示时加行号

C语言

计算机只认识1和0,编程语言的层级如下:

机器语言

汇编语言

高级语言(c语言)

1001,0010,0010,1111

mov  2 f

while   if  int

C语言的编译过程

编译:实质就是翻译。常用的编译器如:gcc

可执行文件是运行时环境和一些.o结尾的文件的集合。将我自己目标文件和这些文件链接以后,形成可执行的文件。

目标文件是二进制机器码文件,可执行文件也是二进制的机器码文件,但是目标文件不能在机器上运行,必须与运行环境等链接才可运行。而可执行文件可以在机器上运行。

编写我的第一个c程序,hello.c他hello.h

hello.h文件内容如下:

#define HELLO "helloworld"

Hello.c文件内容如下

#include <stdio.h>
#include "hello.h"
int main(void)
{
printf(HELLO);
return ;
}

整个编译阶段分为四步:

第一步:预处理,hello.c转变为hello.i,一般为隐式执行

预处理命令:gcc -E hello.c -o hello.i,生成预处理文件简略如下:

extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));

extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;

extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));

# 943 "/usr/include/stdio.h" 3 4

# 2 "hello.c" 2

# 1 "hello.h" 1

# 3 "hello.c" 2

int main(void)

{

printf("helloworld");

return 0;

}

在预处理阶段,宏HELLO被替换为实际内容

第二步:汇编阶段,将C语言文件转换为汇编语言文件,也就是hello.i转变为hello.s

命令:gcc -S hello.i -o hello.s

hello.s文件内容如下

    .file   "hello.c"

    .section   .rodata

.LC0:

    .string "helloworld"

    .text

    .globl  main

    .type   main, @function

main:

.LFB0:

    .cfi_startproc

    pushq   %rbp

    .cfi_def_cfa_offset 

    .cfi_offset , -

    movq    %rsp, %rbp

    .cfi_def_cfa_register 

    movl    $.LC0, %edi

    movl    $, %eax

    call    printf

    movl    $, %eax

    popq    %rbp

    .cfi_def_cfa , 

    ret

    .cfi_endproc

.LFE0:

    .size   main, .-main

    .ident  "GCC: (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4"

    .section   .note.GNU-stack,"",@progbits

第三步:将汇编语言编译成对应的机器语言(二进制格式),也就是hello.s转换为hello.o

命令:

gcc -c hello.s -o hello.o

使用命令

objdump -d hello.o

反汇编hello.o文件内容如下:

hello.o:     file format elf64-x86-64

Disassembly of section .text:

0000000000000000 <main>:

0: 55                   push   %rbp

1: 48 89 e5                mov    %rsp,%rbp

4: bf 00 00 00 00         mov    $0x0,%edi

9: b8 00 00 00 00         mov    $0x0,%eax

e: e8 00 00 00 00         callq  13 <main+0x13>

13: b8 00 00 00 00         mov    $0x0,%eax

18: 5d                   pop    %rbp

19: c3                   retq

第四步:将hello.o文件与运行环境链接,形成可执行文件

命令:

gcc hello.o -o hello

查看hello文件内容,命令objdump –d hello反汇编查看

000000000040052d <main>:

40052d: 55                     push   %rbp

40052e: 48 89 e5               mov    %rsp,%rbp

400531: bf d4 05 40 00         mov    $0x4005d4,%edi

400536: b8 00 00 00 00         mov    $0x0,%eax

40053b: e8 d0 fe ff ff         callq  400410 <printf@plt>

400540: b8 00 00 00 00         mov    $0x0,%eax

400545: 5d                     pop    %rbp

400546: c3                     retq

400547: 66 0f 1f 84 00 00 00   nopw   0x0(%rax,%rax,1)

40054e: 00 00

以上为链接后的main函数,注意与未链接的区别:

0000000000000000 <main>:

0:     55                   push   %rbp

1:     48 89 e5                  mov    %rsp,%rbp

4:     bf 00 00 00 00           mov    $0x0,%edi

9:     b8 00 00 00 00           mov    $0x0,%eax

e:     e8 00 00 00 00           callq  13 <main+0x13>

13:     b8 00 00 00 00           mov    $0x0,%eax

18:     5d                   pop    %rbp

19:     c3                   retq

执行文件,命令./hello

如果把hello.c程序中的return 0 去掉的话,返回值就不一定为0

liuzw@ubuntu:~/sunjie/c$ ./a.out

helloworldliuzw@ubuntu:~/sunjie/c$ echo $?

10

总结:以上所有具体的编译过程可直接执行如下命令,直接形成可执行文件a.out

,也可加-o hello

0基础学习ios开发笔记第一天的更多相关文章

  1. 0基础学习ios开发笔记第二天

    C语言的基本结构 c语言的入口函数是main函数. main函数的返回值行业标准是int return 数字:返回值 每条语句最后以分号结尾 注释:行注释.块注释 int main(void) { / ...

  2. 零基础学习iOS开发

    零基础学习iOS开发不管你是否涉足过IT领域,只要你对iOS开发感兴趣,都可以阅读此专题. [零基础学习iOS开发][02-C语言]11-函数的声明和定义 摘要: 在上一讲中,简单介绍了函数的定义和使 ...

  3. [iOS]关于零基础学习iOS开发的学习方法总结

    关于零基础学习iOS开发的学习方法总结 最近很多零基础来参加蓝鸥培训的学生经常会问到一些学习方法的问题,就如下我自己见过的好的学习方法一起讨论一下. 蓝鸥iOS开发技术的学习路线图 程序员的主要工作是 ...

  4. 【零基础学习iOS开发】【转载】

    原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...

  5. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇

    从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...

  6. 【零基础学习iOS开发】【01-前言】01-开篇

    本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...

  7. 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序

    前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...

  8. 【零基础学习iOS开发】【01-前言】02-准备

    一.程序设计语言 上一讲已经说到:要想开发一款软件,首先得学习一些对应的程序设计语言. 至于iOS开发,须要学习的语言主要有:C.C++.Objective-C. 回到顶部 二.是否须要计算机专业知识 ...

  9. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】02-准备

    在上一讲中,介绍了什么是iOS开发.说简单一点,iOS开发,就是开发运行在iPhone或者iPad上的软件.这么一说完,应该有很多人就会产生一些疑惑,比如学习iOS开发是不是一定要买iPhone?需不 ...

随机推荐

  1. VS2010+WINDBG+VMWARE9.0和fatal error RC1106: invalid option: -ologo错误

    提供属性配置文件一份: http://pan.baidu.com/s/1iS1Ix <?xml version="1.0" encoding="utf-8" ...

  2. 【原】Spark中Job如何划分为Stage

    版权声明:本文为原创文章,未经允许不得转载. 复习内容: Spark中Job的提交 http://www.cnblogs.com/yourarebest/p/5342404.html 1.Spark中 ...

  3. oracle logminer全解析

    今天写篇原创的,把在工作中遇到的logminer问题总结下 (1)简介: logminer 工具即可以用来分析在线,也可以用来分析离线日志文件,即可以分析本身自己数据库的重作日志文件,也可以用来分析其 ...

  4. 三种情形容易引起Azure虚拟机重新启动

      与虚拟机或云服务角色中运行的代码有关的问题可能会导致重新启动.但是,Microsoft 在以下情况下也会重新启动您的角色: 来宾操作系统更新 – 仅影响云服务 Web 和辅助角色.有关如何限制这些 ...

  5. Scala学习笔记(二)表达式和函数

    笔记的整理主要针对Scala对比Java的新特性:   1.if表达式 if表达式是有结果返回的. val a= if (5>2) "你好" else 1 a的值为if表达式 ...

  6. ZOJ-3720 Magnet Darts 计算几何,概率

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3720 题意:在一个矩形区域投掷飞镖,每个整点有磁性,每个点的磁性 ...

  7. SignalR Supported Platforms -摘自网络

    SignalR is supported under a variety of server and client configurations. In addition, each transpor ...

  8. UILabel文本垂直顶部对齐的方法

    也不知道为什么UILabel本身没有提供文本垂直顶部对齐的方法,真的有点晕.我们创建一个简单的UILabel来看看: [box type="info"] UILabel *myLa ...

  9. [六]JFreeChart实践五之与Struts2整合

    1.Action,返回Chart package com.java1234.chart.bar; import java.awt.Color; import org.jfree.chart.Chart ...

  10. progressBar 自定义

    自定义 ProgressBar 进度条 自定义样式[复制链接]     黑牛   黑牛当前离线 威望 33 在线时间 31 小时 金钱 443 贡献 10 诚信度 0 最后登录 2013-10-17 ...