C语言---sizeof()到底是什么?

更多关于sizeof()的小小题目请阅读[博客]:C语言–指针进阶3–这些指针和数组相关的题目你都会做吗?

sizeof是什么?

sizeof是C语言的一种单目操作符,如C语言的其他操作符++、–等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。

sizeof的使用

举例:请看下面的代码:

int main()
{
	char ch = 'o';
	short a = 100;
	int b = 200;
	long c = 300;
	long long d = 400;
	unsigned int e = 500;

	int arr[10] = { 0 };

	char cha[] = "hello c";

	printf("ch的长度:%d 字节\n", sizeof(ch));
	printf("a的长度:%d 字节\n", sizeof(a));
	printf("b的长度:%d 字节\n", sizeof(b));
	printf("c的长度:%d 字节\n", sizeof(c));
	printf("d的长度:%d 字节\n", sizeof(d));
	printf("e的长度:%d 字节\n", sizeof(e));

	printf("\nint型数组arr的长度:%d 字节\n", sizeof(arr));
	printf("\n字符型数组cha的长度:%d 字节\n", sizeof(cha));


	printf("\nshort类型的长度:%d 字节\n", sizeof(short));
	printf("int的长度:%d 字节\n", sizeof(int));


	return 0;
}

程序输出结果:
C语言---sizeof()到底是什么?_第1张图片

可以看出,sizeof计算的就是变量或者类型在内存中所占存储大小,其单位为字节!

计算数组的大小时:

对于数字型的数组,比如代码中的int型数组,sizeof是这样计算的:(每个元素的大小 ✖ 元素个数),因此代码中int arr[10]这个数组计算出来的结果是40字节,因为每个元素的大小是int型4个字节,一共10个元素,故而一共是40个字节。

对于字符型数组,比如代码中的char cha[] = "hello c";,因为字符串其末尾会自动加上一个结束符“\0”,因此cha[]中实际的字符是这样的:hello c\0,其中空格算一个字符,\0算一个字符,一共8个字符,而一个字符所占空间为1个字节,因此一共有8个字节。

另需注意,sizeof并不是一个函数,而是一个操作符,因此对于一个具体的变量来说,比如a吧,sizeof a这样的不加括号的表述也是正确的,但为了让代码更清晰明确,最好还是加上括号。

你可能感兴趣的:(C语言学习笔记,c语言,开发语言,后端)