C语言的数据类型们在内存中是怎样分配的?又有着怎样的意义?
前言
C语言中有多种数据类型,每种类型又各有分工,那么它们在内存中是如何分配空间的呢?
`
一、数据类型
类型 | 类型含义 |
---|---|
char | 字符数据型 |
short | 短整型 |
int | 整型 |
long | 长整型 |
long long | 更长整型 |
float | 单精度浮点型 |
double | 双精度浮点型 |
二、内存分配
1.sizeof关键字
如何计算各种类型所占空间大小,这里我们就需要用到sizeof这个关键字,sizeof是一种单目操作符,作用于计算类型或者变量所占空间大小
2.各种类型空间计算
#include<stdio.h>
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
return 0;
}
运行程序我们会得到下面这个结果(并不是所有编译器结果都一样,空间大小以自己实操为准)
那么得到的这些结果又是什么意思呢?我们可以查证得知,sizeof计算的单位是字节,但是字节又是多大呢?为了更好的了解程序的底层原理,下面我们来深入研究一下:
我们知道计算机所有的程序最终都是由二进制执行的,无数的0和1组成了我们现在的信息大爆炸时代,一串二进制0000001001中任意一个0或者1它的大小就是1bit(比特位),了解了这个这样我们就能更好的认识计算机中的所有单位,看下图
单位 | 换算 |
---|---|
… | … |
1Tb | 1TB=1024Gb |
1Gb | 1GB=1024Mb |
1Mb | 1MB=1024Kb |
1Kb | 1Kb=1024yte |
1yte(字节) | 1yte = 8bit(比特位) |
看到这里,我们就可以知道上面程序运行的结果所占空间到底有多大了,例如:sizeof(int)=4字节,也就是32个比特位,那么它在内存中就会分配到
00000000000000000000000000000000这样的二进制位置;了解这个之后将会对以后底层原理的深入研究有不少帮助
三 .类型意义
C语言中为什么有这么多的类型,我们都知道计算机的出现是为了帮助人们解决生活中的各种问题的,既然程序指向了生活,那么C语言的语法肯定也要贴近生活,例如表达一个人的年龄我们可以用整型int age = 18;一个人的体重用浮点型 double weight = 152.56;名字我们可以用字符类型 char name = jack;类型的意义就在于此
总结
有些地方可能没有补充到位或有不恰当的地方,欢迎各位指出,后面我会慢慢介绍C语言的基础语法,然后向着编程的重点进攻,由浅入深