C语言中提供了许多的数据类型,如下图所示:
c语言为什么要引入这么多的数据类型呢?因为C语言归根结底只是一门编程语言,一种让计算机为我们做事情的工具。引入这么多的数据类型是为了更加方便的表现现实世界中事物。
对于正在学习C/C++但不知道学习路线,不知道该如何找到工作的朋友,我还是要推荐下我自己建的学习群:231662552,首先你要是学C/C++的,其次不管你是小白还是大牛,小编都挺欢迎,群里每天都会分享C/C++相关干货,有基础教程和项目视频资料,欢迎初学和进阶中的小伙伴
1.什么是数据类型?
C语言为我们提供了int, float等基本数据类型,这些都是表示基本数据用的。然而C语言也为我们提供了复杂的数据类型,比如struct, union等。这些可以由基本数据类型抽象组合而成,可以对应现实世界的任何抽象事物,方便我们编写程序。
那我们怎么去理解数据类型。我们通常用一个数据类型,比如int去定义一个变量,就像这样:
int a;
其实我是这么认为的,就像数学里面的“设”一样,设出一个未知数a,当然我们也可以为它设置初始值。然后我们就可以使用这个a了,因为a是没有但是我们要用到的,所以要先声明。至于要用那种数据类型完全取决于自己的需求。
2.数据类型的本质是什么?
其实数据类型的本质就是“固定内存块大小的别名”,为什么这么说呢?
我们可以做一个测试用例:
#include #include int main { printf("sizeof(int) : %d ", sizeof(int)); printf("sizeof(float) : %d ", sizeof(float)); printf("sizeof(double) : %d ", sizeof(double)); printf("sizeof(long) : %d ", sizeof(long)); printf("sizeof(char) : %d ", sizeof(char)); system("pause"); return 0; }123456789101112123456789101112
结果:
sizeof(int) : 4 sizeof(float) : 4 sizeof(double) : 8 sizeof(long) : 4 sizeof(char) : 1
从上面的测试来看,各种数据类型的大小都是固定的,我们声明变量的时候就是在告诉编译器我要申请这么大的一块内存,而这块内存的标号就是这个变量的名字。所以变量和内存是两码事,我们是通过变量向内存里边读写数据而不是向这个变量在读写数据。
学习C语言最重要的就是要搞懂内存的概念,C语言与其他高级语言比如C#,Java不同,C语言是弱类型的语言,对数据类型没有那么严格的检查。所以自己要务必分清楚数据类型和变量的关系,往往就是因为概念不清晰而导致BUG。