1.C语言基本知识
编译器:将高级语言程序解释成计算机所需的详细的机器语言指令集的程序。(编译器是一个转换的程序)。
Visual Studio等:是一个集成开发环境(Integrated Development Environment, IDE),包含了编译器和一些其他的工具.
代码流程:
源代码(.c) ==> 编译器 ==> 目标代码(.obj) ==> 链接器(加入了库代码与启动代码) ==>可执行代码(.exe).
其中.obj和.exe都是机器码,只是exe比obj加入了库代码与启动代码。
C语言中标识符由字母、数字和下划线组成,区分大小写,不能以数字开头。
良好的程序风格和文档,可以使程序更容易的阅读与维护。
基本数据类型: 整型、浮点型、指针和复合类型。 每类又分成有符号与无符号两种
长整型至少与整型一样长,而整型至少与短整型一样长。但长整型并不一定必须长于短整型。
2.常见误区
typedef可以为各种数据类型定义新名字,防止声明变得过长。
例如: typedef int my_int
const int a = int const a ,用于不改变变量值的情况下。
define MAX 20, define的结果可以用到任何地方(无类型),而const的结果只是一个变量(有类型)。二者定义的值都不允许改变。
3.作用域问题
变量/标识符的作用域:代码块作用域,文件作用域,原型作用域,函数作用域。
代码块:一对花括号之间的所有语句。 避免在嵌套的代码块中出现相同的变量名,否则,内部代码块中的变量会屏蔽外部代码块中的变量。
文件作用域:在所有代码块之外(最外层括号外)声明的标识符都具有文件作用域,从标识符声明之处到源文件结尾处都是可以访问的。
4.标识符的链接属性:
处理在不同文件中出现的标识符。作用域与链接属性也有关。
链接属性:
external:同一标识符在多个源文件,多个声明均指向同一实体; 用extern表示
internal:同一标识符在同一源文件中的声明指向同一实体,不同源文件,指向不同实体;
用static表示 ,也表示静态变量
none: 同一标识符所有的声明标识符均指向不同实体
5.循环相关
do while语句至少执行一次循环
break:跳出循环,进行下一阶段的程序;嵌套循环时只跳出最内层循环。
continue:结束当次循环的剩余语句,进行下一次判断/循环;循环嵌套时之影响最内层的循环。
switch语句最后加上default子句,可以避免出现问题。
没有循环语句的循环体,采用;表示空语句。
左移补零即可,右移分逻辑移位(补零)和算术移位(按数的正负号补0/1)。
malloc:字节数;
calloc:元素个数,元素字节数。
6.指针相关
int *a 可以理解为:*a后的值是int型,或者a是int *类型变量。
NULL指针,给指针变量赋0值即可。
*操作符具有从右向左的结合性,**a相当于*(*a)
声明一个指针变量并不会分配内存,因此需要进行初始化
指针操作:
<1>.指针+-整数。
<2>.指针-指针:结果是类型的差。
<3>.比较相等或不等,也可执行<,<=,>,>=这些操作。
上述指针必须指向同一个数组。
左值一般是变量,右值一般是常量/表达式;左值可以放在左右,右值只能放在右边。