C语言 sizeof操作符

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 sizeof操作符相关的知识,希望对你有一定的参考价值。

sizeof操作符

sizeof是c语言中的一个操作符,类似于++、–等等。sizeof能够告诉我们编译器为某一特定数据或者某一个类型的数据在内存中分配空间时分配的大小,大小以字节为单位。

基本语法:

sizeof(变量);
sizeof 变量;
sizeof(类型);

sizeof 注意点:

  • sizeof返回的占用空间大小是为这个变量开辟的大小,而不只是它用到的空间。和现今住房的建筑面积和实用面积的概念差不多。所以对结构体用的时候,大多情况下就得考虑字节对齐的问题了;
  • ※ sizeof返回的数据结果类型是unsigned int
  • 要注意数组名和指针变量的区别。
    通常情况下,我们总觉得数组名和指针变量差不多,但是在用sizeof的时候差别很大,对数组名用sizeof返回的是整个数组的大小,而对指针变量进行操作的时候返回的则是指针变量本身所占得空间,在32位机的条件下一般都是4。而且当数组名作为函数参数时,在函数内部,形参也就是个指针,所以不再返回数组的大小;

示例代码:

1. sizeof基本用法

//1. sizeof基本用法
void test01(){
	int a = 10;
	printf("len:%d\\n", sizeof(a));
	printf("len:%d\\n", sizeof(int));
	printf("len:%d\\n", sizeof a);
}

2. sizeof 结果类型

//2. sizeof 结果类型
void test02(){
	unsigned int a = 10;
	if (a - 11 < 0){
		printf("结果小于0\\n");
	}
	else{
		printf("结果大于0\\n");
	}
	int b = 5;
	if (sizeof(b) - 10 < 0){
		printf("结果小于0\\n");
	}
	else{
		printf("结果大于0\\n");
	}
}

3. sizeof 碰到数组

//3. sizeof 碰到数组
void TestArray(int arr[]){
	printf("数组TestArray arr size:%d\\n",sizeof(arr));
}
void test03(){
	int arr[] = { 10, 20, 30, 40, 50 };
	printf("数组array的 size: %d\\n",sizeof(arr));

//数组名在某些情况下等价于指针
	int* pArr = arr;
	printf("arr[2]:%d\\n",pArr[2]);
	printf("array size: %d\\n", sizeof(pArr));

	//数组做函数函数参数,将退化为指针,在函数内部不再返回数组大小
	TestArray(arr);
}

以上是关于C语言 sizeof操作符的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,sizeof返回值代表啥意思?

c语言详解sizeof

C语言中sizeof的用法

C语言中,sizeof运算符有啥作用?

在C/C++编程语言中不同操作系统基本数据类型所占字节数

sizeof的主要用法