Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

《c和指针》--再谈多维数组

$
0
0
#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 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles