指针数组
本帖最后由 花開丶若相惜ソ 于 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++;
}}
对着答案大概能知道意思,有没有哪位鱼友帮详细讲解下。 int *a 分别包含a到a6个指针。。分别指向 2,6,10,4,8,12.
q=a...a代表这个指针数组的列地址。。
**q=**a
*a代表a数组首行首列元素a.....而a里装的是2的地址,取*号,得到数值2.。
q++相当于在列之间做移动。。。
不不不,q是a的地址,**q==*q==*(*(q+0)+0)==*(q+数组宽度(定义时第二的下标)*0(第一个下标)+0(第二个下标))==q(解释同前)
[]定义就是加上括号内数值整体取* q = a
等价于 q = a;
所以你可以尝试输出下列值,看看结果你就明白了:
a 和 q
a 和 q
*a 和 *q
*a 和 *q
a 和 q
*a和 *q
页:
[1]