用指针引用二维数组元素int a[][],*p;如何用指针引用a[][]?p与a的区别是什么?(如:*(*(a+i)+j)和*(*(p+i)+j))
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 22:48:33
用指针引用二维数组元素int a[][],*p;如何用指针引用a[][]?p与a的区别是什么?(如:*(*(a+i)+j)和*(*(p+i)+j))
用指针引用二维数组元素
int a[][],*p;
如何用指针引用a[][]?
p与a的区别是什么?(如:*(*(a+i)+j)和*(*(p+i)+j))
用指针引用二维数组元素int a[][],*p;如何用指针引用a[][]?p与a的区别是什么?(如:*(*(a+i)+j)和*(*(p+i)+j))
a 是数组首地址,等于 &a[0][0].
*p 声明里是指针.语句里 *p 是 指针指向的值. 语句里 p 是地址.
*p 是1个星号的指针,可以让它指向1维数组,也可以让有序地它指向2维数的各元素.
int a[行][列]; a[j][i] 数组元素排列 是:
第一行 的 第1列,第二列,第三列.
第二行 的 第1列,第二列,第三列.
第三行 的 第1列,第二列,第三列.
2维数可以看成1维数组,排成1字长蛇阵:第一行 的 第1列,第二列,第三列..;
第二行 的 第1列,第二列,第三列.;.直到最后一行最后一列.
#define row 3
#define col 4
int a[row][col]; // 某一元素: a[j][i]
int *p,i,j;
排成1字长蛇阵后,一维下标,可以用二维 下标计算: j*col + i.
某一元素: a[j][i] 的 数值 就是 * (p+j*col+i);
----
写出完整程序,依次输出所有元素,对比:
#include
main()
{
#define row 3
#define col 4
int a[row][col] = { 0,1,2,3,4,5,6,7,8,9,10,11};
int *p;
int i,j;
p=&a[0][0];
for (j=0;j