sizeof运算符用来返回对应数据类型占用空间大小,单位为字节。用法如下:
#include <stdio.h>
int main(void)
{
printf("char类型所占字节数:%d\n", sizeof(char));
printf("short类型所占字节数:%d\n", sizeof(short));
printf("int类型所占字节数:%d\n", sizeof(int));
printf("long类型所占字节数:%d\n", sizeof(long));
printf("float类型所占字节数:%d\n", sizeof(float));
printf("double类型所占字节数:%d\n", sizeof(double));
return 0;
}
输出如下:
char类型所占字节数:1
short类型所占字节数:2
int类型所占字节数:4
long类型所占字节数:4
float类型所占字节数:4
double类型所占字节数:8
除了sizeof()之外针对变量还存在另外一种调用方式:
#include <stdio.h>
int main(void)
{
int num = 10;
printf("int变量所占字节数:%d\n", sizeof num);
printf("int变量所占字节数:%d\n", sizeof(num));
return 0;
}
输入如下:
int变量所占字节数:4
int变量所占字节数:4
这两种方式有一点区别,sizeof()不管针对类型还是变量都是生效的,第二种方式sizeof后只能跟变量不能为数据类型,如上sizeof num能运行成功,而用sizeof int的话铁定凉凉。
再来聊聊size_t这个类型,这是sizeof方法返回值所属类型,这并不是一个新的数据类型,聊它之前先扯一扯typedef,C中typedef可以给变量起别名。
#include <stdio.h>
typedef double dbl;
int main(void)
{
dbl num2 = 6.66;
printf("double变量所占字节数:%d\n", sizeof(num2));
return 0;
}
如上,其中dbl就是double的别名,比如你有个好兄弟叫王二,小名叫二狗子,你不管喊王二还是二狗子指的都是他。同理上述代码中的dbl其实就是double,那么num2其实就是double类型。
这一点理解了的话size_t这个类型就好理解了,这家伙就是unsigned int类型的别名。也就是说C中肯定有这么一串代码
typedef unsigned int size_t;
#include <stdio.h>
typedef double dbl;
int main(void)
{
dbl num2 = 6.66;
size_t size = sizeof(num2);
printf("double变量所占字节数:%d\n", size);
return 0;
}
所以这家伙其实就是unsigned int。