C语言规定在使用一个数据之前,必须定义数据的类型,因为数据类型决定了数据占用内存的字节数.取值范围以及在其上可以进行的操作等.
0.数据类型的本质是什么?
其实数据类型的本质就是“固定内存块大小的别名”,为什么这么说呢? 我们可以做一个测试用例:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() { 5 printf("sizeof(int) : %d\n", sizeof(int)); 6 printf("sizeof(float) : %d\n", sizeof(float)); 7 printf("sizeof(double) : %d\n", sizeof(double)); 8 printf("sizeof(long) : %d\n", sizeof(long)); 9 printf("sizeof(char) : %d\n", sizeof(char)); 10 system("pause"); 11 return 0; 12 } 13 /* 14 结果: 15 sizeof(int) : 4 16 sizeof(float) : 4 17 sizeof(double) : 8 18 sizeof(long) : 4 19 sizeof(char) : 1 20 21 */
从上面的测试来看,各种数据类型的大小都是固定的,我们声明变量的时候就是在告诉编译器我要申请这么大的一块内存,而这块内存的标号就是这个变量的名字。所以变量和内存是两码事,我们是通过变量向内存里边读写数据而不是向这个变量在读写数据。
学习C语言最重要的就是要搞懂内存的概念,C语言与其他高级语言比如C#,java不同,C语言是弱类型的语言,对数据类型没有那么严格的检查。所以自己要务必分清楚数据类型和变量的关系,往往就是因为概念不清晰而导致BUG。