注册 登录
编程论坛 C++教室

二维数组指针*(a+i)和a+i有什么区别?

lemonandtree 发布于 2017-12-08 17:04, 3430 次点击
a+i表示的是表示的是第i行的首地址,*表示取所指的地址的值,那为什么*(a+i)也表示首地址啊,不应该是首地址所代表的值吗??
11 回复
#2
yangfrancis2017-12-08 22:22
a才是首地址,a+i是从a开始往后数的第i+1个地址。*(a+i)不是地址,是a+i地址的值。
#3
lemonandtree2017-12-09 10:02
只有本站会员才能查看附件,请 登录
为什么这里写的是地址而不是值啊 ?还是书有问题吗?
#4
lemonandtree2017-12-09 10:07
只有本站会员才能查看附件,请 登录
#5
yangfrancis2017-12-09 19:30
我读书少,不要吓我。这段代码的循环明显只执行了两次,你要告诉我右边是它的运行结果吗?
#6
lemonandtree2017-12-11 15:58
是啊
#7
lemonandtree2017-12-11 16:03
不好意思,弄错了,不是,是这样的
只有本站会员才能查看附件,请 登录
#8
stop12042017-12-13 07:29
我看到你书上 有个逗号. 一个说明前面  一个说明后面
#9
lemonandtree2017-12-13 08:11
前面和后面不是一样吗?我指的是第i行第0列元素地址和第i行首地址难道不是一样的吗?谢谢你们的回答。我去问了我的c++老师,他说这个要去看c++的参考手册。
#10
yangfrancis2017-12-13 22:00
找到原因了。a[2][3]是一个int型二维数组,也可以看成是一个int*型的一维数组(里面含两个int*元素),每个int*型元素又分配了一个三个int型的空间,所以在输出a[0]和a[1]的时候输出的实际上是它们各自所分得的int[3]第一个元素的地址。
#11
lemonandtree2017-12-14 16:34
也就是每一行的第一个元素的首地址
只有本站会员才能查看附件,请 登录
在加一个*就是值了。
#12
新人学习2017-12-28 02:58
总共就是两个地址 一个是a[0]的地址 一个是a[1]的地址
1