BeginMan blog

C语言的sizeof关键字

此篇为《C语言点滴》关于sizeof的总结

sizeof 是C 语言的一个关键字不是一个函数。但是它的行为类似于一个函数,因为它返回一个类型为size_t 的无符号的整型数。我们通常用sizeof来计算变量所占内存的真实尺寸。

sizeof(指针)和sizeof(数组)的区别

#include <stdio.h>

int main()
{
	int a[] = {0, 1, 2, 3, 4, 5};
	char c[] = {'a', 'b'};
	int* ip = a;
	char* cp = c;
	printf("sizeof(ip)=%lu\n", sizeof(ip));
	printf("sizeof(cp)=%lu\n", sizeof(cp));
	printf("sizeof(a)=%lu\n", sizeof(a));
	printf("sizeof(c)=%lu\n", sizeof(c));
	// “根据数组名a 来计算数组到底有多少个元素”
	printf("sizeof(a/a[0])=%lu\n", sizeof(a) / sizeof(a[0]));
}

打印出来的结果:

sizeof(ip)=8
sizeof(cp)=8
sizeof(a)=24
sizeof(c)=2
sizeof(a/a[0])=6

对指针利用sizeof 得到的都是一个相同的值。在C语言中,指针只保存一个地址,所以任何类型的指针都占用相同的字节数(指针大小 4 or 8)。对数组名利用sizeof 得到的是整个数组占用的字节数。