一、sizeof的本质是运算符
sizeof是C/C++中的关键字,是(单目)运算符或者操作符,而不是函数。用于判断变量或数据类型的字节大小,sizeof 运算符可用于获取类、结构、共用体和其他用户自定义数据类型的大小。
sizeof的使用方法:
sizeof(int)
对于变量:
char a;
sizeof(a);
sizeof a;//对于变量可以不加()
从这里可以看出sizeof并不是函数,因为函数的实参必须放在括号里,而对于sizeof,判断变量的长度不需要放在括号里。
二、sizeof的返回值类型是unsigned int
int main()
{
unsigned int a=4;
if (a-8>0)
print("大于0");//有符号和无符号数运算,返回无符号数
if (sizeof(int)-8>0)
print("sizeof返回无符号整数");
else
print("小于0");
return 0;
}
可以用这段代码验证,验证表明sizeof返回值类型为unsigned int 无符号整型。
三、sizeof可以统计数组的长度
int main()
{
int a[]={0,1,2,3};
print("数组长度为:%d\n",sizeof (a)/sizeof(int));
return 0;
}
当数组作为参数传入其它函数时,这种方法就不能用了。这是由于数组作为参数传入函数时,传递的是地址,此时数组名会退化为指针,该指针指向数组首地址。例如:
void test(int arr[])
{
print("数组的长度:%d\n",sizeof(arr)/sizeof(int));//输出结果是错的,就是因为数组作为参数传递时退化为指针了
}
int main()
{
int a[]={0,1,2,3};
test(a);
return 0;
}