int a[n], *p;
那可以用p=a来指向一维数组a,指针p的移动是一次移动向下移动一个地址。
但是如果有
int a[3][4],*p;
那么p++移动的时候每次指向的是a[0][0]、a[1][0]、a[2][0]的地址,如果要指向a[2][3],那该如何控制指针了?请详细说明一下喽,实在很模糊喽!
----------------解决方案--------------------------------------------------------
再加个*
----------------解决方案--------------------------------------------------------
*(p+2*4+3)
----------------解决方案--------------------------------------------------------
*(p+2*4+3)
什么意思啊!
没道理的撒
----------------解决方案--------------------------------------------------------
定义P为指向数组的指针
int (*p)[4];
p=a;
这样就可以了
----------------解决方案--------------------------------------------------------
定义P为指向数组的指针
int (*p)[4];
p=a;
这样就可以了
可以了???
是可以用来指向二维数组了还是一维数组,如果是二维数组的话那要怎么运用呢?
----------------解决方案--------------------------------------------------------
定义P为指向数组的指针
int (*p)[4];
p=a;
这样就可以了
int *p=a[0];
----------------解决方案--------------------------------------------------------
这个是指向一维数组的指针,p++完成的结果满主楼主提出的要求
如果p=a;的话,就有
p[0][1]==a[0][1];
p[i][j]==a[i][j];
----------------解决方案--------------------------------------------------------
还有如果定义
int a[3][4],*p;
p=a[0]的话,每次p++的结果不是楼主所期待的那样是a[0][0]、a[1][0]、a[2][0]的地址
----------------解决方案--------------------------------------------------------
LZ概念浑浊..
如果定义 指向行的指针 (*p)[4]=a;.那么a[2][3]就是 *(*(p+2)+3))
如果定义 指向列的指针 *p=a[0]; 那么a[2][3]就是 *(p+2*4+3)
楼主应该还没弄明白行和列的区别..乌鸦给他解释一下吧
PS: ANSI C中 int *p=a; 是错误的
----------------解决方案--------------------------------------------------------