为什么不同指针的大小不同

Why Size is different for different pointers

#include <stdio.h>

#define R 10
#define C 20

int main()
{
    int *p;
    int *p1[R];
    int *p2[R][C];
    printf("%d %d %d", sizeof(*p),sizeof(*p1),sizeof(*p2));
    getchar();
    return 0;
}

为什么输出是:4 8 160?为什么 p1 的大小变成 8 而不是 4?

考虑类型

  1. sizeof(*p) ==> sizeof(int)
  2. sizeof(*p1) ==> sizeof(int *)
  3. sizeof(*p2) ==> sizeof((int [20]))

注意:根据您的平台和编译器,您会得到不同的结果。

此外,据我们所知,sizeof 会产生 size_t 类型的结果,建议使用 %zu 格式说明符来打印结果。