|
发表于 2013-11-26 14:48:48
|
显示全部楼层
因为你说的是在32位的情况下,所以求出的结果为:
(1): sizeof(str) = 6
解析:因为 char str[] = "hello";这是一个用字符数组
来存放字符串的赋值方式,所以在最后会加上'\0'作为结束符,
所以求的是字符数组所占的字节数sizeof(str) = 6。
但是如果求的是strlen(str),结果会为strlen(str) = 5,
因为这时求的是整个字符数组的长度,所以求得strlen(str) = 5。
(2): sizeof(p) = 4
解析: 因为char * p = str,是一个字符指针,指针在计算机中所占的字节数是4。
(3): sizeof(n) = 4
解析: 因为 int n = 10,这时一个整型定义,整型在32位系统中是4个字节,所以 sizeof(n) = 4。
(4): sizeof(str) = 4
解析: 因为 void func(char str[100])
{
sizeof(str) = ;
}
这是一个函数,现在要求的是函数中参数的字节数,因为在函数参数中,
数组的首元素就当相当于一个指针,所以实际上求的是指针的字节数,
所以sizeof(str) = 4。
(5): sizeof(p) = 4
解析: 因为 void * p = malloc(100);这仅仅是动态分配100个内存而已,
但是实际上求的依然还是指针所占的字节数,所以 sizeof(p) = 4。
希望我的答案是你想要的。 |
|