早教吧 育儿知识 作业答案 考试题库 百科 知识分享

有二位数组a[n][m]对于指针问题*(*(a+i)+j)与a[i][j]为什么等价(i,j在n,m范围内)?对于*号不是取值吗?a是a[0][0]的地址,那么a+i也是一个地址,则*(a+i)不是值吗?然后再加j再用*符号干什么?书

题目详情
有二位数组a[n][m] 对于指针问题 *(*(a+i)+j) 与 a[i][j] 为什么等价 (i ,j在n,m范围内)?
对于*号不是取值吗?a是a[0][0]的地址,那么a+i也是一个地址 ,则*(a+i)不是值吗?然后再加 j 再用 *符号干什么?书上只有*(*(a+i)+j) 与 a[i][j] 等价,但我不理解!
▼优质解答
答案和解析
首先,二维数组实质上是一段连续空间,而数组名也仅仅是一个记号,它并不是指针.
但它可以当作指针使用.这是编译器语法解析时的处理.
真正的指针应该是一个存有地址的变量.所以指针和数组名是不同的.
a[n][m]这个二维数组.是一个n*m的空间.它可以当作一个二级指针在基作用域内使用.
二级指针是一个指向指针的指针.