为什么c程序的输出是40?

时间:2017-11-26 05:00:33

标签: c arrays

#include<stdio.h>

int main() {
char *arr[] = { "sunbeam ","dac","wimc","pune","karad" };
char **ptr;
int i;
printf("size : %d\n",sizeof(arr));

}

这个c程序显示40作为输出请解释我是怎么来的。

1 个答案:

答案 0 :(得分:4)

两件事:arr是一个指针数组,sizeof返回 bytes 中的大小。

由于arr是指向char的五个指针的数组,因此sizeof(arr)的结果等于5 * sizeof(char *)。在典型的64位系统(指针是64位,即8个字节)上,这是40个字节。

此外,您使用错误的格式打印sizeof的结果。您应该使用"%zu"z修饰符,因为参数为size_tu类型,因为它是无符号的。参见例如this printf (and family) reference了解更多信息。