C语言学习总结(一)

在千锋IOS培训的第一阶段结束了,回顾这段时间还是很有收获的。有时候我会想,相对与我的大学生涯相比,我对C语言对OOP思想都有了更深的理解和使用技巧,在能力上还是有长进的。如下做各章节知识点回顾,完全凭借记忆,没有书本的死抄重复,个人总结不全或差错、疏漏遗漏的地方,欢迎大家补充指教回复,谢谢。 

Linux系统环境Mac系统下终端命令总结 
使用终端进行文件操作及编写C语言程序是每个初级程序员必须学会使用的工具。Mac终端使用的是GCC编译器。 

一、 文件操作 
1、 查看当前文件路径:—>pwd 
2、 查看当前文件列表:—>ls 
2.1查看详细文件列表: —>ls –l 
2.2 查看隐藏文件列表:—>ls -a 
3、 创建文件夹: —>mkdir 
4、 删除文件夹: —>rmdir 
5、 复制文件:cp 源文件 新文件 
6、 移动文件:mv 源文件 新文件 
7、 删除文件:rm –rf,是强制删除 
8、 压缩文件: 
8.1第一种:tar cfvj 目标文件 源文件[压缩后的格式:.tar.bz2] 
8.2第二种:tar cfvz 目标文件 源文件[压缩后的格式:tar.gz2] 
解压缩:把c换成x即可。 
注释:c:打包,f:生成目标文件,v查看打包过程,j:压缩格式 
*.c:通配符*,作用是对后缀名为.c的所有文件进行操作 
9、 快速查看文件内容:cat 文件名 

二、 vim编辑器的使用 
vim编辑器有三种模式:指命模式、编辑模式、命令行模式。下面分别对三种模式进行总结。 
1、 指命模式:进入:ESC 
2、 编辑模式: 进入:小写i定位前一行,大写i定位行首 
     小写a定位后一位,大写A定位行尾 
a) 向下跳转换行:小写o 
b) 向上跳转换行:大写O 
c) 定位行首0零(同I) 
d) 定位行尾:shift+4(同A) 
e) 定位在文件首:gg 
f) 定位在文件尾:G 
g) 删除所有文本内容:ggdG 



3、 命令行模式: 
a) 显示行号:set nu 
b) 取消显示行号:set nonu 
c) 查找: 
i. /关键词   N上移   n下移 

d) 替换: 
i. 全部替换:%s   s只替换一个(当前行第一个) 
ii. 全局替换:%s/被替换/替换后/g 
e) 复制: 
i. 单行复制:yy(光标所在行) 
ii. 多行复制:行数yy 
f) 剪切: 
i. dd:剪切光标所在行 
ii. x:删除光标行字母 


三、 GCC编译器的编译过程 
a) 预处理 
gcc –o 2.i –E 2.c   展开头文件 
b) 编译(汇编代码) 
gcc –o 2.s –S 2.i 
c) 汇编->机器码二进制 
gcc –o 2.o –C 2.s 
d) 链接 
gcc –o test 2.o 







C语言总结 
一、 数据类型与sizeof单目操作符的使用 
1、 常见的数据类型: 
整型:shout int    int    long int 
字符型:  char 
浮点型:  float   double 
无符号类型unsigned与有符号类型 
2、 sizeof(),是一个单目运算符,不是关键字也不是系统函数,是一个操作符,返回值是一个无符号长整型,即unsigned long int,即%lu,%ld,返回类型是size_t 
3、 有符号类型与无符号类型的区别 
数据是以二进制形式保存的,也就是0和1。首位是符号位,有符号类型的首位是符号位,不参与运算。正数为0,负数为1。无符号类型的首位不是符号位,参与运算。 
4、 整型与字符型数据是相通的转换,我理解为:ASCII码作为转换桥梁,可以互相变通,只是存储形式不同而已。 
5、 整型数据的八进制与十六进制存储:八进制是%o,有符号形式是%#o  十六进制是%x,有符号形式是%#x 
6、 整型数据之间的转换:八进制、十进制、十六进制之间的转换都是可以实现的,重点是:不管你以什么形式存储,就看你以什么形式读取,读取形式才是重点。 
7、 浮点类型:单精度float与双精度double的区别就是有效位数,单精度是小数点后有效位6位,双精度小数点后有效位8位。 
8、 单精度赋值在常量后面添加标示符f,否则系统以double类型判断。 
9、 在这三种类型数据之间进行转换的方式有两种,一种是隐式转换和显示转换或强制转换。规律是有效位短的向有效位长的转换,防止损失精度取反码。 
二、 流程控制 
1、 if-else if-else 
2、 while 
3、 for 
4、 do-while 
5、 break; 
6、 continue; 
7、 switch-case 
三、 数组与指针 
1、 在C语言中,我认为数组分为两种:一种是我们认为存储在堆内存中;另一种是字符数组,我认为字符数组就是用来解决C语言中没有字符串的一种变相方式。 
2、 对于一维数组、二维数组及多维数组的声明和使用有一点小区别。我们声明数组必须有数组类型、数组名字,但可以没有数组长度并可以初始化为空。初始化可以用大括号进行初始化,也可以使用双引号初始化为字符串类型。 
3、 在数组赋值时候,如果我们使用的是字符存储方式,那么我们必须用for循环进行赋值,下标从0开始到长度-1停止。 
4、 如果我们使用的是字符串方式存储数组,那么我们可以通过指针访问数组。通过声明一个指针变量,并指向数组首地址。 
5、 关于首地址的说明:数组的首地址就是数组的a[0],即:首元素的地址,数组名存放的就是数组的首元素地址,所以*p=a=a[0],它们的值是相同的。 
阅读更多

没有更多推荐了,返回首页