
数组名代表数组第一个元素的地址,二维数组三维数组也这样吗?
inta[2]={1,2};intb[1][2]={1,2};int*p1=a;//这里可以int*p2=b;//为什么这里就不行?同样都是数组名,而且数组名代表数组第一...
int a[2]={1, 2}; int b[1][2]={1, 2}; int * p1=a;//这里可以 int * p2=b;//为什么这里就不行?同样都是数组名,而且数组名代表数组第一个元素的地址,为什么二维 数组这里就不能赋给指针呢?
展开
展开全部
同样都是数组名,而且数组名代表数组第一个元素的地址
这话说的有问题啊
数组名代表的是数组的首地址!
但不同的维数的数组情况是不一样的,如二维数组
int
b[3][2]
;
b是数组的首地址,也是第一行的地址
b[0]是第一行第一个元素的首地址(也可以说是数组第一个元素的地址)
可是从数值上来说,b和b[0]是相等的。
变量在进行赋值时,需要接收数据的变量与值变量(或常量)是相同类型才可以
回到你的问题中
int
a[2]={1,
2};
//一维数组
int
b[1][2]={1,
2};
//二维数组
int
*
p1=a;//一维数组对应一维指针,可以赋值
int
*
p2=b;
//二维数组
对应
”伪“二维指针,而p2是一维指针,所以赋值时会有编译错误
”伪“二维指针
这样记比较方便,实际上应该是这样的:
int
(*p2)[2]
=
b
;
//这样才是准确的
p2是个指针,指向一个有两个int元素的数据块
这话说的有问题啊
数组名代表的是数组的首地址!
但不同的维数的数组情况是不一样的,如二维数组
int
b[3][2]
;
b是数组的首地址,也是第一行的地址
b[0]是第一行第一个元素的首地址(也可以说是数组第一个元素的地址)
可是从数值上来说,b和b[0]是相等的。
变量在进行赋值时,需要接收数据的变量与值变量(或常量)是相同类型才可以
回到你的问题中
int
a[2]={1,
2};
//一维数组
int
b[1][2]={1,
2};
//二维数组
int
*
p1=a;//一维数组对应一维指针,可以赋值
int
*
p2=b;
//二维数组
对应
”伪“二维指针,而p2是一维指针,所以赋值时会有编译错误
”伪“二维指针
这样记比较方便,实际上应该是这样的:
int
(*p2)[2]
=
b
;
//这样才是准确的
p2是个指针,指向一个有两个int元素的数据块
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询