鱼C论坛

 找回密码
 立即注册
查看: 1578|回复: 4

[已解决]指针数组

[复制链接]
发表于 2017-7-11 08:36:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 花開丶若相惜ソ 于 2017-7-11 08:44 编辑
  1. main()
  2. {
  3.   int b[3][2]={2,4,6,8,10,12};
  4.   int *a[2][3],**q,k,i,j;
  5.   for(i=0;i<2;i++)
  6.   for(j=0;j<3;j++)
  7.   a[i][j]=*(b+j)+i;
  8.   q=a[0];
  9.   for(k=0;k<6;k++)
  10.   {printf("%d",**q);
  11.   q++;
  12.   }}
复制代码


对着答案大概能知道意思,有没有哪位鱼友帮详细讲解下。
最佳答案
2017-7-11 09:57:06
2017-07-11_095435.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-11 08:41:18 | 显示全部楼层
int *a[2][3] 分别包含a[0][0]到a[1][2]6个指针。。分别指向 2,6,10,4,8,12.
q=a[0]...a[0]代表这个指针数组的列地址。。
**q=**a[0]
*a[0]代表a数组首行首列元素a[0][0].....而a[0][0]里装的是2的地址,取*号,得到数值2.。
q++相当于在列之间做移动。。。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-11 09:06:31 From FishC Mobile | 显示全部楼层

回帖奖励 +2 鱼币

不不不,q是a[0][0]的地址,**q==*q[0][0]==*(*(q+0)+0)==*(q+数组宽度(定义时第二的下标)*0(第一个下标)+0(第二个下标))==q[w*0+0](解释同前)
[]定义就是加上括号内数值整体取*
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-11 09:57:06 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +2 鱼币

2017-07-11_095435.png

评分

参与人数 1荣誉 +1 鱼币 +5 贡献 +1 收起 理由
花開丶若相惜ソ + 1 + 5 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-11 10:00:52 | 显示全部楼层

回帖奖励 +2 鱼币

q = a[0]
等价于 q = a;
所以你可以尝试输出下列值,看看结果你就明白了:
a          和      q
a[0]      和      q[0]
*a         和     *q
*a[0]     和     *q[0]
a[0][0]   和     q[0][0]
*a[0][0]  和     *q[0][0]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-25 02:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表