花開丶若相惜ソ 发表于 2017-7-11 08:36:34

指针数组

本帖最后由 花開丶若相惜ソ 于 2017-7-11 08:44 编辑

main()
{
int b={2,4,6,8,10,12};
int *a,**q,k,i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
a=*(b+j)+i;
q=a;
for(k=0;k<6;k++)
{printf("%d",**q);
q++;
}}

对着答案大概能知道意思,有没有哪位鱼友帮详细讲解下。

花開丶若相惜ソ 发表于 2017-7-11 08:41:18

int *a 分别包含a到a6个指针。。分别指向 2,6,10,4,8,12.
q=a...a代表这个指针数组的列地址。。
**q=**a
*a代表a数组首行首列元素a.....而a里装的是2的地址,取*号,得到数值2.。
q++相当于在列之间做移动。。。

知表不言 发表于 2017-7-11 09:06:31

不不不,q是a的地址,**q==*q==*(*(q+0)+0)==*(q+数组宽度(定义时第二的下标)*0(第一个下标)+0(第二个下标))==q(解释同前)
[]定义就是加上括号内数值整体取*

ba21 发表于 2017-7-11 09:57:06

BngThea 发表于 2017-7-11 10:00:52

q = a
等价于 q = a;
所以你可以尝试输出下列值,看看结果你就明白了:
a          和      q
a      和      q
*a         和   *q
*a   和   *q
a   和   q
*a和   *q
页: [1]
查看完整版本: 指针数组