c里也一样 不过正如你所说,数组指针和指向一维数组的指针意思是不一样的,只是它们都指向自己同一个地址而已。a+i和&a[i]是数组指针,a[i]&a[i][0]
从迂腐的角度来说,从来没有所谓行地址的说法(至少 C 语言没有)。所谓的行地址实质是指向数组的指针罢了,例如有 int a[3][5]; 则 a + 1 或者 &a[1] 指向 a 这个数组里的第二个元素,元素类型为 int[5],即 a + 1 的类型为 int(*)[5]。当然,也从来没有规定说 a[i] 的值和 &a[i] 的值相等,这是因为 a[i] 的类型为 int[5] (转换后为 int*),但 &a[i] 的类型为 int(*)[5],两个类型不兼容,自然不能保证它们的值相同(可惜的是,主流平台上所有指针的内部表示都完全一样,差异仅仅存在于文法层面)。
按错键了,还没输完 继续补充,a[i]和&a[i][0]是指向1维数组的指针。 其实就是 *(a+i)==a[i]
69,371
社区成员
243,082
社区内容
加载中
试试用AI创作助手写篇文章吧