断断续续学习C语言多年了,可能自学这种语言, 对我来说难度有点大...
1.变量和函数使用前需要声明, 而声明从执行结果上分为两种
A.声明并创建变量 (定义性声明, 分配内存) B.只声明变量 (引用性声明)
A例:int age; B例:extern int age;
所以, 定义性声明之后, 可以用&取到对象的地址(指针)
相类似的, 函数声明也有引用性函数声明和定义性函数声明
2. C语言使用分号做为语句的结尾, 可以出现在 1变量声明尾部, 2函数引用性声明尾部, 3<类型定义>尾部, 4表达式语句5选择语句6循环语句 的尾部
变量声明和函数引用性声明, 还有类型定义, 都不是语句, 这里只是为了方便在一起叙述
3.分号与逗号对应
使用分号做结尾, 有一个原因是分号前, 可能会出现逗号:
例: int a, b;
struct rect {int width; int height;} r_a, r_b ; //定义性声明, 会为r_a, r_b两个变量分配内存
struct point {int x; int y;}; //引用性声明, 没有变量需要分配内存, 这里只是一个"自定义类型"的类型定义语句
C++中, class person {public: char * name;}; //与前一行的结构声明是相同情况, 只是一个"自定义类型"的类型定义语句
4.{}后面什么时候有分号, 什么时候没有分号?
A: {}用做函数体起止符时, 也就是函数定义尾部, 不可以跟有分号, 而引用性函数声明带分号,
void a(), b();
a(){}
b(){}
B:用做类<类型定义>, 结构<类型定义>的起止符时, 需要跟有分号, 语法允许在分号前,同时声明使用逗号隔开的多个变量
C:用做复合语句起止符时, 可能跟有分号, 也可能不可以跟有分号。 很明确的是, else前的}一定不可以有分号
复合语句的{}, 可以认为不允许跟有分号。实际看到的分号, 多数是隶属if语句的, 或是while语句的
5. 预处理指令, 标号都是单占一行, 不可以跟有分号