C语言部分关键字
2016-10-23 23:36
218 查看
1. static: 修饰局部变量(只在初次运行时,进行初始化工作) 全局变量(只是本.c文件可见) 函数(类似于全局变量)
2. extern:编译器并不匹配extern的函数的参数列表,只做函数名匹配!
3. typedef:重定义过的数据类型,对于typedef char* newC; newC a,b;,这时候会将a b都定义为char *,而使用char *a,b或者define获得效果都是只能把a定义为char *,而b还是char而已
4. typedef char * ptrC; const ptrC p2 = string; 这里并不是和define效果一样,简单的替换,而是变为const 修饰了p2这个指针变量是常量。
5. #define的好处:可以使用ifndef undef ifdef等;唉进行逻辑判断。
6. typedef的好处:定义的变量类型范围被限制在所定义的函数或者文件内。
7. int *( *(*fp) (int))[10]; 解释:fp是一个函数指针,指向一个形参为一个int型数据的,返回值是一个指向有10个指针的指针数组的指针,该指指针数组里的每一个元素指向一个整型。
8. int *(*(*arr[5])( ))( ); 解释:arr是函数指针数组,数组中每个元素指向一个形参为空,返回值是一个指向函数指针的指针,该函数形参为空,返回值为int型。
9. float (*(*b( )) [ ])( ); 解释:b是一个函数指针,该函数参数为空,返回值指向一个函数指针数组,数组中的每一个元素都指向一个函数参数为空,返回float型的函数。
10. float( *(*e[10])(int *))[5]; 解释:e是函数指针数组,每个元素指针指向一个函数参数为int *,返回值指向一个数组指针,数组大小为5,类型为float的函数。
11. sizeof a/(a) 而 sizeof(int)必须加括号
12. 为什么一个字节的范围为 -2^7 – 2^7-1 ? 补码表示,-128取反加一,得到数字就是最小,而整数取反加一是本身,而且最高位为符号位,所以最大为2^7-1
13. unsigned int + int ->unsigned int
14. struct student str = {.account= 1, .name = “xx”, .age = 3};可以这样初始化
15. 结构体大小:以最长的成员长度进行分配(无论这个最长的成员位于什么位置,整个结构体为每个变量分配的长度就是最长的字节数)
struct
stu
{
intnum;
chara;
longlongname;
}; 大小为16 = (4 + 1) + 8 = 8 + 8
16. 结构体成员后为; 枚举成员后为, 联合union 成员后为;
17. 枚举和#define的区别:1)#define 在预编译阶段进行简单的替换,枚举常量则是在编译的时候确定其值; 2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量; 3)枚举一次可以定义大量相关的常量,而define只能一次定义一个。
18. 枚举的大小:一般为4个字节,为一个整型int的大小,和其中的常量个数无关,因为是常量,所以不具有内存空间大小。
19. 联合体的大小:取联合中最长的成员长度,注意对齐方式VS2013采用以最短成员为对齐长度!!!!
2. extern:编译器并不匹配extern的函数的参数列表,只做函数名匹配!
3. typedef:重定义过的数据类型,对于typedef char* newC; newC a,b;,这时候会将a b都定义为char *,而使用char *a,b或者define获得效果都是只能把a定义为char *,而b还是char而已
4. typedef char * ptrC; const ptrC p2 = string; 这里并不是和define效果一样,简单的替换,而是变为const 修饰了p2这个指针变量是常量。
5. #define的好处:可以使用ifndef undef ifdef等;唉进行逻辑判断。
6. typedef的好处:定义的变量类型范围被限制在所定义的函数或者文件内。
7. int *( *(*fp) (int))[10]; 解释:fp是一个函数指针,指向一个形参为一个int型数据的,返回值是一个指向有10个指针的指针数组的指针,该指指针数组里的每一个元素指向一个整型。
8. int *(*(*arr[5])( ))( ); 解释:arr是函数指针数组,数组中每个元素指向一个形参为空,返回值是一个指向函数指针的指针,该函数形参为空,返回值为int型。
9. float (*(*b( )) [ ])( ); 解释:b是一个函数指针,该函数参数为空,返回值指向一个函数指针数组,数组中的每一个元素都指向一个函数参数为空,返回float型的函数。
10. float( *(*e[10])(int *))[5]; 解释:e是函数指针数组,每个元素指针指向一个函数参数为int *,返回值指向一个数组指针,数组大小为5,类型为float的函数。
11. sizeof a/(a) 而 sizeof(int)必须加括号
12. 为什么一个字节的范围为 -2^7 – 2^7-1 ? 补码表示,-128取反加一,得到数字就是最小,而整数取反加一是本身,而且最高位为符号位,所以最大为2^7-1
13. unsigned int + int ->unsigned int
14. struct student str = {.account= 1, .name = “xx”, .age = 3};可以这样初始化
15. 结构体大小:以最长的成员长度进行分配(无论这个最长的成员位于什么位置,整个结构体为每个变量分配的长度就是最长的字节数)
struct
stu
{
intnum;
chara;
longlongname;
}; 大小为16 = (4 + 1) + 8 = 8 + 8
16. 结构体成员后为; 枚举成员后为, 联合union 成员后为;
17. 枚举和#define的区别:1)#define 在预编译阶段进行简单的替换,枚举常量则是在编译的时候确定其值; 2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量; 3)枚举一次可以定义大量相关的常量,而define只能一次定义一个。
18. 枚举的大小:一般为4个字节,为一个整型int的大小,和其中的常量个数无关,因为是常量,所以不具有内存空间大小。
19. 联合体的大小:取联合中最长的成员长度,注意对齐方式VS2013采用以最短成员为对齐长度!!!!
相关文章推荐
- C语言register关键字—最快的关键字
- c语言的链接属性和static、extern关键字
- 程序员——C语言之结构体、枚举、预处理和static,extern关键字 易错知识点
- C语言之输出数组中相同的部分
- c语言深度剖析之—关键字
- C语言的static和extern关键字
- 打印树中关键字k1 - k2之间(含k1,k2)的所有元素C语言
- c语言中volatile关键字
- C语言初学者必须掌握的关键字
- C语言中的volatile关键字
- C语言之关键字:static
- C语言void关键字
- C语言中的extern和static关键字详解
- [2014.3.18]C语言中的static关键字
- 数组概念和题目分析(C语言部分)z
- C语言中volatile关键字的作用
- C语言中的一些关键字(五)
- C语言中几个关键字的作用(static、extern、const、register、auto、typedef)
- C语言部分字符串处理代码示例
- C语言中部分字符串处理函数