黑马程序员技术交流社区
标题:
已经彻底懵B了,求教一个关于指针数组的问题
[打印本页]
作者:
Abuzzworld
时间:
2015-10-5 23:19
标题:
已经彻底懵B了,求教一个关于指针数组的问题
int a[]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[3], m;
for ( m=0; m<3; m++) p[m]=&a[m*4];
printf("%d\n", p[2][3]);
-----------------------------
12
Program ended with exit code: 0
复制代码
p不是一维指针数组么,为什么可以用p[2][3] 这种形式去访问所存地址后3的变量啊
作者:
lvguodong
时间:
2015-10-6 00:35
这个真的没有见过,明天我问问老师吧!
作者:
ff774411
时间:
2015-10-6 10:41
1、*p[3] 结合上下代码,可以先把这个看成是一个二维指针数组,表示为*p[3]={a[0],a[1],a[2]};
2、for ( m=0; m<3; m++) p[m]=&a[m*4];简单理解就是,m可以取0 、1、 2三个值,也就是说
p[0]=&a[0],p[1]=&a[4],p[0]=&a[8].由数组a可以算出a[0]、a[4]、a[8]的值分别为0、5、9,所以
*p[3]={a[0],a[1],a[2]}的a[0]、a[1]、a[2]分别对应0、5、9,也就是二维数组每一行的值的首地址。
3、这样分析下来,*p[3] = {{1、2、3、4}、{5、6、7、8}、{9、10、11、12}},所以*p[2][3]所
指向的就是下标为行为2,列为3的值,也就是 12 了。
作者:
洪吉童
时间:
2015-10-6 11:23
学习学习
作者:
小李探花
时间:
2015-10-7 21:57
学习围观......
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2