用指针引用二维数组元素int a[][],*p;如何用指针引用a[][]?p与a的区别是什么?(如:*(*(a+i)+j)和*(*(p+i)+j))
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 07:36:00
![用指针引用二维数组元素int a[][],*p;如何用指针引用a[][]?p与a的区别是什么?(如:*(*(a+i)+j)和*(*(p+i)+j))](/uploads/image/z/10132123-67-3.jpg?t=%E7%94%A8%E6%8C%87%E9%92%88%E5%BC%95%E7%94%A8%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0int+a%5B%5D%5B%5D%2C%2Ap%EF%BC%9B%E5%A6%82%E4%BD%95%E7%94%A8%E6%8C%87%E9%92%88%E5%BC%95%E7%94%A8a%5B%5D%5B%5D%3Fp%E4%B8%8Ea%E7%9A%84%E5%8C%BA%E5%88%AB%E6%98%AF%E4%BB%80%E4%B9%88%3F%EF%BC%88%E5%A6%82%EF%BC%9A%2A%EF%BC%88%2A%EF%BC%88a%2Bi%EF%BC%89%2Bj%EF%BC%89%E5%92%8C%2A%EF%BC%88%2A%EF%BC%88p%2Bi%EF%BC%89%2Bj%EF%BC%89%EF%BC%89)
用指针引用二维数组元素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