【发布时间】:2022-01-02 18:23:21
【问题描述】:
我打印了这个全局变量的大小,输出为 20。我试图理解它不仅仅是 15,因为有 5 个元素,每个元素的大小为 3(包括每个元素末尾的 \0 )。
#include <stdio.h>
char* arrChar[5] = { "hh","jj","kk","zz","xx" };
int main()
{
printf("size = %d\n", sizeof(arrChar));
}
我不知道是否有联系,但如果我们将所有数字组合在一起,它将是 20,但我仍然不明白元素的数量 (5) 如何添加到数组中元素的大小 ( 15) 有任何意义。
【问题讨论】:
-
提示:您的平台上五个指针的大小是多少? . 那毕竟是那个数组中的实际内容。
-
since there's 5 elements, each one is size of 3不。你有一个指针数组。每个指针的大小为 4。 -
char arrChar[5][3]的类型是正确的,但char* arrChar[5]的类型完全不同。 -
*char的大小在 32 位机器上通常为 4 字节。所以数组的大小是 5*4 Byte = 20 Byte。