`

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],它们的值是相同的。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics