#include <stdio.h> int main(void){ int a[2][3]; printf("%p\n",a+1); printf("%d\n",sizeof(a+1)); printf("%p\n",*(a+1)); printf("%d\n",sizeof(*(a+1))); return 0; }
上面的代码执行的结果是:
0xbfb04814
4
0xbfb04814
12
a+1是一个“指向包含3个整形元素的数组的指针”。
*(a+1)标识了一个包含3个整型元素的子数组,它的类型是“指向整型的指针”,是一个常量指针。
所以sizeof(a+1)只是获得一个普通整型指针的大小,在我的系统中,为4个字节,而*(a+1)是获得一个包含3个整型元素的子数组的大小,3*4=12个字节。
作者:TODD911 发表于2013-5-6 21:50:20 原文链接
阅读:22 评论:0 查看评论