用指针引用二维数组元素int a[][],*p;如何用指针引用a[][]?p与a的区别是什么?(如:*(*(a+i)+j)和*(*(p+i)+j))

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 18:55:24

用指针引用二维数组元素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

用指针引用二维数组元素int a[][],*p;如何用指针引用a[][]?p与a的区别是什么?(如:*(*(a+i)+j)和*(*(p+i)+j)) 用指针引用二维数组元素int a[][],*p;如何用指针引用a[][]?p与a的区别是什么?(如:*(*(a+i)+j)和*(*(p+i)+j)) C语言中指针引用二维数组元素问题假设a是一个3行4列的二维数组,请问为什么a[0]与*(a+0)是等价的,我的理解是二维数组名a既然是该数组首元素的地址,那么(a+0)也是一个地址,“*(a+0)”就 用C语言在主函数中定义和初始化一个二维数组a[3][4]和一个指针数组,采用指针数组去访问数组元素a[2][4]; 用C语言在主函数中定义和初始化一个二维数组a[3][4]和一个指针数组,采用指针数组去访问数组元素a[2][4] c语言中,指针于二维数组的问题假设我们引用二维数组a中的元素a[I][J],指针P指向a.书上说引用方法有四种 p[i]+[j] *(*(p+i)+j) (*(p+i))[j]) *(p[i]+j)为什么要弄得这么复杂啊,而且看不懂为什么可以这 C中 用指针表示一个二维数组中任意的元素 书上写是a【i】【j】=(*p+m*i+j) m是数组的第二维的维数 若有以下的定义和语句,则下面各个符号的正确含义是:int a[3][4] ,(*p)[4];p=a;p+1p+1是第几行 定义一个二维数组int m[3][3],用键盘为数组各元素赋值,并输出各元素 假定一个二维数组的定义为“int a[3][6];则该数组所含元素的个数为 假定二维数组的定义为“int a[8][3];”,则该数组所含元素的个数为_____ 关于C语言二维数组指针的疑问定义一个二维数组int a[i][j],由定义可知a=&a[0][0]=a[0],由于a可看成是带有i个一维数组元素的数组,所以由一维数组的情形可推知a[i]=*(a+i)和a+i=&a{i]和a=&a[0],即有a=&a[0] C语言的一个概念性问题,我很难理解.Thank you 通过地址来引用二维数组元素.若有以下定义:int a[3][4],i,j;且当0 若有定义int(*p)[3]; 则定义了一个名为p的指针变量 它可以指向每行有三个整数元素的二维数组请问如何理解这句话和此定义 为什么是二维数组? C语言指针概念问题!定义 int x[10],*pt=x;则对x数组元素正确引用?A *(x+3) B *&x[10] C *(pt+10) D pt+3 假定一维数组的定义为“int a[8][3];”,则该数组所含元素的个数为假定二维数组的定义为“int a[8][3];”,则该数组所含元素的个数为_____ 定义 int a[3][4]; 取二维数组元素数据a[i][j],为什么可以用 *(&a[0][0]+4*i+j) 和 *(a[0]+4*i+j) 定义 int a[3][4]; 取二维数组元素数据a[i][j],为什么可以用 *(&a[0][0]+4*i+j) 和 *(a[0]+4*i+j) int[10];则对a数组元素的正确引用是 a[10-10] 若有说明:int[10];则对a数组元素的正确引用是A a[10] B a[3,5] Ca(5) Da[10-10] c语言中,如果是二维或多维数组用指针加减运算,那算哪个?如 int a[5][5],*pa; pa=a;pa+2;那结果是指向a[