分配了多少字节

时间:2021-03-27 15:05:12

标签: c pointers

double *p[10] 分配了多少字节; ?

我想知道 4 个字节(= 1 个指针大小)和 10 x 4 个字节(= 10 个指针的数组)。

2 个答案:

答案 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],您将获得一个指向数组的指针。

相关问题