找到指向数组的指针的大小

时间:2017-11-06 20:46:06

标签: c pointers

#include <stdio.h>



#define R 10

#define C 20



int main()

{

   int (*p)[R][C];

   printf("%d",  sizeof(*p));

   getchar();

   return 0;

}

o / p = 800

这里p是一个指向二维数组的指针..所以它的o / p应该是4还是8?

1 个答案:

答案 0 :(得分:1)

这里的问题是你没有显示指针的大小,而是显示指针所指向的内存块的大小。

R = 10,C = 20。 int在您的系统上有4个字节的大小。所以10 * 20 * 4 = 800。因此,使用您的代码,printf("%d", sizeof(*p));将打印 800

如果您要查看指针变量的大小,则必须将代码更改为:

printf("%d",  sizeof(p));

参考:printf reference pagesome-programmer-dude提供