a[5][6]是个二维数组,要表示a[i][j]的地址

*(a+i)+j

(a+i)为什么要加*号,它本身不就是第i行的首地址吗??

a表示一个二维数据,a+i表示的是a[i]的地址,*(a+i)表示a[i][0]的地址,然后*(a+i)+j才表示a[i][j]的地址。
a表示二维,加*表示一维,所以要加*。追问

那要用a表示整个二维数组的首地址呢???应该怎样表示???能直接用一个a吗??

追答

是的一个单独的a是表示整个二维数组的首地址,
因为a,*a的值是相同的,但是说语义不同,所以容易引起歧义。
能不能直接使用a还是要看做什么?表示什么语义?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-16
a+i对于二维数组来说,不表示第二行首地址,它表示的是第二行的地址,只是第二行的首元素地址跟第二行地址是同一个地址,在数值上是相等的,但是表示的意义却是不一样的——追问

那要用a表示整个二维数组的首地址呢???应该怎样表示???能直接用一个a吗??

追答

整个数组的地址就直接用a就可以了,整个数组第一行的地址、整个数组第一行首元素的地址、整个二维数组首元素的地址也都跟a同值,a表示的是一个起始地址

相似回答