#include<stdio.h>
int main() {
char *arr[] = { "sunbeam ","dac","wimc","pune","karad" };
char **ptr;
int i;
printf("size : %d\n",sizeof(arr));
}
这个c程序显示40作为输出请解释我是怎么来的。
答案 0 :(得分:4)
两件事:arr
是一个指针数组,sizeof
返回 bytes 中的大小。
由于arr
是指向char
的五个指针的数组,因此sizeof(arr)
的结果等于5 * sizeof(char *)
。在典型的64位系统(指针是64位,即8个字节)上,这是40
个字节。
此外,您使用错误的格式打印sizeof
的结果。您应该使用"%zu"
(z
修饰符,因为参数为size_t
,u
类型,因为它是无符号的。参见例如this printf
(and family) reference了解更多信息。