C语言新手 数组问题

二维数组a[i][j]=(*(a+i))[j]
解析:*(a+i)外的一对圆括号不可少,若写成:*(a+i)[j],因为运算符[]的优先级高于*号,表达式可转换成:
*(*((a+i)+j)),即为*(*(a+i+j))

可转换为后面的式子怎么理解?我怎么觉得应该是*((a+i)+j)

第1个回答  2015-08-14
原解析有误。
二维数组其实就是i个具有j个元素的一维数组,因此a[i][j] --> (*(a+i))[j] --> *(*(a+i)+j)
第2个回答  2015-08-14
(a+i+j)=((a+i)+j) ,
理解运算优先级就好了, 里面的那个括号 可有可无追问

我觉得他多了个*号

追答

* 号 不能省,a【】【】 中 a为数组的指针,二维数组指针,用其表示数组时 需要两个*, 表示行指针 和列指针

本回答被提问者采纳
相似回答