double *p[10] 分配了多少字节; ?
我想知道 4 个字节(= 1 个指针大小)和 10 x 4 个字节(= 10 个指针的数组)。
答案 0 :(得分:2)
您有一个包含十个指针的数组。它包含虚假值,您应该对其进行初始化(可能用 memset
清除它)。
在你的机器上,十个指针需要四十个字节。
在我的桌面上(x86-64 运行 Ubuntu 20.04,使用 GCC 编译器)他们需要 80 个字节
在某些微控制器(可能是 Arduino)上,一个指针可能只需要两个字节。 2021 年,您将使用一些 cross-compiler。
参见 this C reference 和一些 C 标准,如 n1570 或更好。
从现有开源 C 软件(如 GNU make)的源代码中汲取灵感。
并研究一些用 C 编写的开源 C 编译器的源代码,例如 tinycc。
答案 1 :(得分:1)
如果您想知道 p
占用多少空间,只需执行以下操作:
printf("%zu", sizeof p);
如果您想确切知道它是什么类型,请使用此网站 https://cdecl.org/
就您而言, p
不是指针。它是一个指针数组。如果您更改为 double (*p)[10]
,您将获得一个指向数组的指针。