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

时间:2015-07-22 07:14:31

标签: c pointers sizeof

#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 个答案:

答案 0 :(得分:7)

考虑类型

  1. sizeof(*p) ==&gt; sizeof(int)
  2. sizeof(*p1) ==&gt; sizeof(int *)
  3. sizeof(*p2) ==&gt; sizeof((int [20]))
  4. 注意:根据您的平台和编译器,您将得到不同的结果。

    另外,正如我们所知,sizeof生成类型为size_t的结果,建议使用%zu格式说明符来打印结果。