数组指针的一些相关问题

img


在网上找了资料也尝试去解决但还是错的,也不清楚原因

如果将一个MN列矩阵A按行线性存储,你可以定义

int A1[M][N];

int A2[M*N];

二维数组A2在内存里也是线性存储的
那么,你可以通过下面方式用指针来访问矩阵元素(i,j)

int *p = &A1[0][0]; // p指向第一个矩阵元素
*(p + i * N + j) = 1; // 将矩阵元素(i,j)赋值1

int *q = A2; // q指向一维数组首地址,即第一个元素
*(q + i * N + j) = 2; // 将矩阵元素(i,j)赋值2