一、基本数据类型分析
1.什么是数据类型?
数据类型可以理解为固定内存大小的别名,是创建变量的模子。
2.变量本质
变量是一段实际连续存储空间的别名,程序中通过变量来申请并命名存储空间,通过变量名来使用存储空间。
实例剖析:
1 #include
2
3 typedef int INT32;//自定义变量类型
4 typedef unsigned char BYTE;
5 typedef struct _demo
6 {
7 short s;
8 BYTE b1;
9 BYTE b2;
10 INT32 i;
11 }DEMO;
12
13 int main()
14 {
15 INT32 i32;
16 BYTE byte;
17 DEMO d;
18
19 printf("%d, %d\n",sizeof(INT32),sizeof(i32));
20 printf("%d, %d\n",sizeof(BYTE),sizeof(byte));
21 printf("%d, %d\n",sizeof(DEMO),sizeof(d));
22 return 0;
23 }
二、auto,register,static分析
1.C语言中的变量可以有自己的属性,在定义变量的时候可以加上“属性”关键字,“属性”关键字指明变量的特有意义。
2.auto即C语言中局部变量的默认属性,编译器默认所有的局部变量都是auto的。auto变量存储在程序的栈中。
3.static关键字指明变量的“静态”属性,同时具有“作用域限定符”的意义。static修饰的局部变量存储在程序静态区,static的另一个意义是文件作用域限定符。
----static修饰的全局变量作用域只是声明的文件中,同时修饰的函数作用域只是声明的文件中。
4.register关键字指明变量存储于CPU寄存器中,register只是请求寄存器变量,但不一定请求成功。
----register变量的值必须是CPU寄存器可以接受的值,不能用&运算符获取register变量的地址,因为register变量存储于寄存器中而不在内存中。
实例剖析:
1 #include
2
3 int g = 0;
4 int m = 0;
5
6 void f1()
7 {
8 int i = 0;
9 i++;
10 printf("%d\n",i);
11 }
12
13 void f2()
14 {
15 static int i = 0;//静态局部变量只被初始化一次,生命周期是程序运行期。
16 i++;
17 printf("%d\n",i);
18 }
19 int main()
20 {
21
22 auto int i = 0;
23 register int j = 0;//常用于非常重视性能的实时系统。
24 static int k = 0;
25
26 for(i = 0; i < 5; i++){
27 f1();
28 }
29 for(i = 0; i < 5; i++){
30 f2();
31 }
32
33 return 0;
阅读(2826) | 评论(0) | 转发(2) |