在C中的2D数组中,为什么2D数组的第一个元素的基地址和第一行的基地址相同?

时间:2017-09-08 14:08:28

标签: arrays pointers

假设我们有array A[m] [n]。我发现A=A[0]。如果两个字词仅包含地址,那么为什么*A*A[0]会给出相同的结果?  假设第一个元素是2,它的基地址是1000,那么如果AA[0]都包含1000,则取消引用这两个术语应该产生与2相同的结果。

1 个答案:

答案 0 :(得分:1)

A不等于A[0],但A=&A[0][0],即A是指向矩阵第一个元素的指针。 A[0]是指向A[0][0]的指针。

所以:

  • *A提供A[0];
  • 的地址
  • *(A[0])给2;
  • *(*A)给2;

例如:

#include <iostream>

int main() {
    int A[5][5];

    A[0][0] = 2;

    std::cout<< *A << std::endl;
    std::cout<< *(*A) << std::endl;
    std::cout<< *(A[0]) << std::endl;

    return 0;
}

此代码打印:

0x7fffc5a6fc70
2
2