0基础学习ios开发笔记第一天
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开发笔记第一天的更多相关文章
- 0基础学习ios开发笔记第二天
C语言的基本结构 c语言的入口函数是main函数. main函数的返回值行业标准是int return 数字:返回值 每条语句最后以分号结尾 注释:行注释.块注释 int main(void) { / ...
- 零基础学习iOS开发
零基础学习iOS开发不管你是否涉足过IT领域,只要你对iOS开发感兴趣,都可以阅读此专题. [零基础学习iOS开发][02-C语言]11-函数的声明和定义 摘要: 在上一讲中,简单介绍了函数的定义和使 ...
- [iOS]关于零基础学习iOS开发的学习方法总结
关于零基础学习iOS开发的学习方法总结 最近很多零基础来参加蓝鸥培训的学生经常会问到一些学习方法的问题,就如下我自己见过的好的学习方法一起讨论一下. 蓝鸥iOS开发技术的学习路线图 程序员的主要工作是 ...
- 【零基础学习iOS开发】【转载】
原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...
- 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇
从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...
- 【零基础学习iOS开发】【01-前言】01-开篇
本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...
- 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序
前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...
- 【零基础学习iOS开发】【01-前言】02-准备
一.程序设计语言 上一讲已经说到:要想开发一款软件,首先得学习一些对应的程序设计语言. 至于iOS开发,须要学习的语言主要有:C.C++.Objective-C. 回到顶部 二.是否须要计算机专业知识 ...
- 李洪强iOS开发之【零基础学习iOS开发】【01-前言】02-准备
在上一讲中,介绍了什么是iOS开发.说简单一点,iOS开发,就是开发运行在iPhone或者iPad上的软件.这么一说完,应该有很多人就会产生一些疑惑,比如学习iOS开发是不是一定要买iPhone?需不 ...
随机推荐
- 支持度(support)和置信度(confidence)
支持度(Support)的公式是:Support(A->B)=P(A U B).支持度揭示了A与B同时出现的概率.如果A与B同时出现的概率小,说明A与B的关系不大:如果A与B同时出现的非常频 ...
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
简记: CGAffineTransformMake(a,b,c,d,tx,ty) ad缩放bc旋转tx,ty位移,基础的2D矩阵 公式 x=ax+cy+tx y=bx+dy+ty 1.矩阵的基本 ...
- 潜语义分析(Latent Semantic Analysis)
LSI(Latent semantic indexing, 潜语义索引)和LSA(Latent semantic analysis,潜语义分析)这两个名字其实是一回事.我们这里称为LSA. LSA源自 ...
- Kooboo中主要的几个关键词中的关系
Kooboo中主要的几个关键词中的关系 Content Type //相当于数据库表 Content //相当于数据 View //部分View 她可以使用Content ...
- poj 2325 Persistent Numbers (贪心+高精度)
把输入数字每次从9-2除,能整除则记录该数字,最后从小到大输出. 应该算是水题,不过窝第一次写高精度除法,虽然1A,不过中间改了好多次. /****************************** ...
- Yii 图片FTP批量上传 并生成缩略图
图片批量上传,前台使用 uploadify.swf,这个就不介绍了.这里使用两个扩展,一个是FTP上传的扩展,还有一个是生成缩略图的扩展地址:http://www.yiiframework.com/e ...
- 由.Net类库提供的农历计算(C#农历)-获取当前日期的农历日期
; i <= chineseDate.GetMonthsInYear(DateTime.Now.Year); i++) { Console.W ...
- poj 1236 Network of Schools【强连通求孤立强连通分支个数&&最少加多少条边使其成为强连通图】
Network of Schools Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13800 Accepted: 55 ...
- 国外一些好用的UX/UI设计工具和资源分享
国外一些好用的UX/UI设计工具和资源分享 你今天使用的设计工具也许不再适合以后的网页和APP设计项目了.新的工具不断的推出市场,目标只有一个,让你的工作更快.更容易而且工作成效更好.今天分享的这些U ...
- [置顶] Oracle job procedure 存储过程定时任务
oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; selec ...