!!!请教c语言中二维数组的数组名与指针的问题

图片说明

  &a[1][0]、a+1、*(a+1)和&(*(a+1))四个的结果相同,都是0028FF0C,那样说明*(a+1)自己本身的地址a+1跟*(a+1)存储的内容(&a[1][0])是相同的,指针*(a+1)自己指向自己,这样是可以的吗?
   还有这也说明0028FF0C这个地址上既存储着地址0028FF0C(从*(a+1)存储的内容来看)又存储着整型‘3’(从a[1][0]存储的内容来看),同一个地址存储着两个不同的元素不会冲突吗?
    ps:我理解为同一个地址但代表不同的内涵,指针*(a+1)自身的地址&(*(a+1))代表一维数组的首地址,是指向一维数组的,通过该地址来找到该一维数组的位置。a[1][0]自身的地址&a[1][0]代表整型变量a[1][0]的地址,存储在指针*(a+1)上,是指向整型‘3’的。两者虽然值都是0028FF0C,但内涵不一样。不知道这样理解对不对。

4个回答

!!!!!自顶,跪求大神解疑

二维数组a[3][2]中,系统会开辟出一段连续地址的内存块,来存储123456这6个数字。a代表的首地址即a[0][0]的地址,a与a[0]的含义是一样的,只不过a+1代表的是a[1][0]的地址,而a[0]+1代表的是a[0][1]的地址。

你可以用数组指针p来输出,看看p指向的地址图片

weixin_38023504
weixin_38023504 首先非常感谢您的解答,这对一个正在自学的小白我来说非常受用,麻烦您看看我贴出来的下一张图,正如您所说a跟a【0】是一样的,但*a跟*a[0]打印出来就不一样了,对于出现这种结果我的理解是a和a【0】的值是一样,但指向同一个变量的不同含义,得到的自然是这个变量在不同含义上的表现,类比h2o在液态表现为水在固态表现为冰。这只是我似是而非的猜想,还想请您指导,说说您的理解
3 年多之前 回复

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐