C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言,所以说学习C语言是进入编程世界的必修课。下面我来分享我学习的c语言的一些收获。
一、include是一个宏,用来导入头文件
1.为什么要导入头文件?因为在这个头文件的库里包含了很多方法,方便我们在工程中直接调用
2." "是表示编译器会首先从自己的工程里面去查找这个头文件,如果找不到就会去从系统库里面查找这个头文件
3.< >是表示编译器会首先从系统库里面查找这个头文件, 如果找不到会从自己的工程里面去查找这个头文件
二、main函数
任何一个程序都必须有,这是程序的入口点,在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。
三、返回值
int 标识这个程序的运行结果(程序在运行时会在系统中申请资源) 0正常 1失败
0--->正常退出:程序在运行中申请的资源全由程序自己分配
1--->非正常退出:程序会收回运行过程中获取的所有资源
四、c语言运行机制
预编译/预处理:
1.宏定义指令:将所有的#define删除,并且展开所有的宏定义
2.条件编译指令:用来处理所有的条件预编译指令
3.头文件包含指令:用来处理#include预编译指令,将头文件展开并且插入到该预编译相应 的位置,得到完整的程序
编译:
1.所谓的编译,就是将预处理完成的程序文件进行语法分析、语义分析等生成相应的汇编代 码
汇编:
1.将汇编代码转化变成机器可以执行的命令
链接:
1.通过调用链接器ID来链接程序在运行过程中所需要的目标文件,以及工程中的其他库文 件,生成可执行文件
五、定义一个变量
定义变量时,系统会立刻分配一个内存,并且会赋值,当程序运行完了以后,内存会自动回收
```
int _tmain(int argc, _TCHAR* argv[])
{
int a=1;
return 0;
}
```
六、声明一个变量
声明变量时,系统不会立刻分配内存,只有在这个变量要被用到时才会分配内存,当程序运行完了以后,内存会自动回收
七、宏定义
宏定义时变量要大写 ,后面的分号尽量不要加。
例如int arr[PI]={};如果加了括号加会报错;会替换成arr[PI;]
八、基本数据类型
int 整数 64位系统里面占4个字节 32位占2个字节,输出格式:%d %02d 不足的补齐 01
float浮点型 占4个字节内存空间,输出格式:%f %.1f 保留1位有效数字
double 双精度浮点型 占8个字节内存空间,输出格式:%f
long 长整型 占8个字节内存空间,输出格式:%ld
char 字符型 占1个字节内存空间,输出格式:%c输出字符 %d输出ASCII码值
bool 布尔类型 true/false 非零即真 零即假
九、float与double的区别
1.在内存中占有的字节数不同
单精度浮点数在机内存占4个字节(32位),双精度浮点数在机内存占8个字节
2.有效数字位数不同
单精度浮点数有效数字8位,双精度浮点数有效数字16位
3.数值取值范围
单精度浮点数的表示范围:-3.40E+38~3.40E+38
双精度浮点数的表示范围:-1.79E+308~-1.79E+308
4.在程序中处理速度不同
一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快
十、结构化控制语句
(一)if...else语句
```
if(表达式1){
语句块1
} else if(表达式2){
语句块2
}else if(表达式3){
语句块3
}else if(表达式m){
语句块m
}else{
语句块n
}
```
1.执行过程
依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句块n。然后继续执行后续程序。
(二)while语句
1.while(循环继续条件){ 循环体语句组;}
2.执行过程
(1)求解"循环继续条件"表达式。如果其值为非0,转2);否则转3)。
(2)执行循环体语句组,然后转1)。
(3)执行while语句的下一条。
显然,while循环是for循环的一种简化形式(缺省"变量赋初值"和"循环变量增值"表达式)。
(三)do...while语句
1.一般格式
do{ 循环体语句组; }
while(循环继续条件);
当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。还是建议用复合语句写,显得你非常细心。
2.执行过程
(1)执行循环体语句组。
(2)计算"循环继续条件"表达式。如果"循环继续条件"表达式的值为非 0(真),则转向(1)继续执行;否则,转向(3)。
(3)执行do-while的下一条语句。
do-while循环语句的特点是:先执行循环体语句组,然后再判断循环条件。
(四)for循环语句
1.选择for循环的标准:一般和数组相关,并且需要知道当前是第几次循环
2.for(循环变量赋初值;循环条件;循环变量增值){内嵌语句}
3.它的执行过程如下:
(1)循环变量赋初值
(2)先求循环条件,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下面第三步
若为假(值为0),则结束循环,转到第5步.
(3)求解循环变量增值
(4)转回上面第(2)步骤继续执行;
(5)结束循环,执行for语句下面的一个语句;
(五)switch语句
```
1.switch(表达式)
{
case常量表达式1: 语句1;break;
case常量表达式2: 语句2;break;
......
case常量表达式n: 语句n;break;
default: 语句n+1;break;
}
```
2.switch主要需要注意的方面有两个:
(1)从哪进:表达式的值与case后的值相同则进入,case顺序不影响结果
(2)从哪出:遇到break或整个switch结束(break以前是为了灵活,现在是累赘)
3.与if语句的不同:
If语句中若判断为真则只执行这个判断后的语句,执行完就跳出if语句,不会执行其他if语句;
而switch语句不会在执行判断为真后的语句之后跳出循环,而是继续执行后面所有case语句。
在每一case语句之后增加break语句,使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果。