| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 916 人关注过本帖
标题:[讨论]啷个回事?
只看楼主 加入收藏
mebol
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-10-7
收藏
得分:0 
还有一个问题:
main()
{ int t[3][2],*pt[3],k;
for (k=0;k<3;k++)
pt[k]=t[k];
}
哪个能正确表示t数组元素地址的表达式 :A: &t[3][2] B: *(pt+1)
为什么?
2007-11-07 22:02
qq95620412
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-11-5
收藏
得分:0 

当然是B了

内存中并不存在元素 t[3][2],因此 &t[3][2]当然是错的。若写成 &t[0][0],&t[0][1],&t[1][0],&t[1][1],&t[2][0],&t[2][1]都可以


*pt[3]是一个指针数组,
for循环完成后
pt[0]指向t[3][2]数组的第一行, pt[1]则指向第二行, pt[2]指向第三行
即 pt[0]的值为数组第一行的首地址,即第一行第一个元素的地址
pt[1]的值为数组第二行的首地址,即第一行第二个元素的地址
pt[2]的值为数组第三行的首地址,即第一行第三个元素的地址
而pt[0]也可以写成*pt
pt[1]也可以写成*(pt+1);
pt[2]也可以写成*(pt+2);


人生路难走,转眼已白头。伤心望远山,黯然下小楼。
2007-11-07 22:22
qiang5219
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-9-10
收藏
得分:0 
学习中......
2007-11-08 00:05
xia0y1
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-10-31
收藏
得分:0 
       有点 荤
2007-11-08 08:41
学c
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-9-17
收藏
得分:0 

感觉这里说的有点问题: pt[1]的值为数组第二行的首地址,即第一行第二个元素的地址
pt[2]的值为数组第三行的首地址,即第一行第三个元素的地址

2007-11-08 11:19
qq95620412
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-11-5
收藏
得分:0 
回25楼:

笔误笔误
因为我图省事,所以用的是复制粘贴

正确的说法应该是:

即 pt[0]的值为数组第一行的首地址,即第一行第一个元素的地址
pt[1]的值为数组第二行的首地址,即第二行第一个元素的地址
pt[2]的值为数组第三行的首地址,即第三行第一个元素的地址

谢25楼的敏锐观察。

[此贴子已经被作者于2007-11-9 9:26:40编辑过]


人生路难走,转眼已白头。伤心望远山,黯然下小楼。
2007-11-08 19:14
快速回复:[讨论]啷个回事?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013590 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved