数组指针C语言的问题,这道题的cd选项等效成什么?

9.12... 9.12 展开
 我来答
金色潜鸟
2019-07-01 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5494万
展开全部
知识点:
(1) int (*cp)[5], 这里有小括号,所以 cp 是1个指针,(又叫行指针),注意,是一个指针,后面[5]表示这个指针用于指向有5列的2维数组。 cp=c; 说明,c 是2维数组,它每行有5列元素,现在让cp指向了第一行。 cp=&c[0][0]; 若 cp+j 则指向 第 j 行。
(2) C语言中,方括号实际上也是运算符,记住衡等式 a[i] == *(a+i),用它,可以变换[] 与 *。 这里 *号 是求值。
好了。假定, int c[4][5]={0,1,2,3,4,10,11,12,13,14,
20,21,22,23,24,30,31,32,33,34},(*cp)[5]; cp=c;
变换 9.12 的 c,d:
*(cp+1)+3 = (c[1])+3= &c[1][3]; 是地址。 *(*(cp+1)+3) 是 c[1][3] 的值。
*(*cp+2)= *(*(cp+0)+2)=*(c[0]+2)=c[0][2]; 是元素c[0][2]的值。
我们来输出:
printf ("%d -- %d\n",*(*(cp+1)+3), c[1][3]);
printf ("%d -- %d\n",*(*cp+2),c[0][2]);
输出:
13 -- 13
2 -- 2
更多追问追答
追问
这里的(c[1]+3)为啥=&c[1][3]?
有人告诉我这里的*是降级的,采用这种降级法来算
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式