多维数组int a[3][3];*a和a是相同的地址,为什么*a+1和a+1就不一样了?
#include"stdio.h"#include"string.h"intmain(){inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};pri...
#include"stdio.h"
#include"string.h"
int main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
printf("%d\n",a+1);
printf("%d",(*a)+1);
getwchar();
} 展开
#include"string.h"
int main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
printf("%d\n",a+1);
printf("%d",(*a)+1);
getwchar();
} 展开
3个回答
展开全部
多维数组也可以当成一维数组来处理.举个例子:
一维数组a[3]={1,2,3},那么a指的就是1的地址,*a便是1;
二维数组的话,a[3][3],等同于三个一维数组,每个一维数组里面又有三个元素,这三个元素我们称之为抱团,那么a便指的是三个抱团数组的首地址,那么*a指的便是第一个抱团里面的第一个元素的地址,那么想取得第一个抱团里面的第一个元素的话,那就是**a了.
由上分析的话,a+1指的就是以抱团为单位的下一个地址,也就是第二个抱团的地址,(*a)+1指的是第一个抱团里面+1,也就是第一个抱团里面的第二个元素,于是*((*a)+1)便是2.
不知道你懂了没呢?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询