免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1895 | 回复: 7
打印 上一主题 下一主题

请教一个基础的c语言结构指针的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-31 12:14 |只看该作者 |倒序浏览
struct NODE{
int a;
struct NODE *b;
struct NODE *c;
};

struct NODE nodes[5]={
{5 ,nodes+3, NULL},
{15,nodes+4, nodes+3},
{22,NULL,    nodes+4},
{12,nodes+1, nodes},
{18,nodes+2, nodes+1},
};

struct NODE *np =nodes+2;
struct NODE **npp =&nodes[1].b;

nodes数组在内存中的起始位置为200,并且整数和指针长度都是4个字节。
求值 1.&nodes
     2.&nodes->a
这是c和指针一书上的一个题,我觉得这两个答案应该是1.未知,2.非法
而书上的标准答案是1.200   2.200,请帮我解释下为什么,谢谢
我觉得1.nodes的值应该是200,为什么&nodes也是200呢?
2.&nodes->a,->的优先级高于&,应该是先看nodes->a,再看&吧,而书上的答案nodes->a非法,加个&也应该非法啊

论坛徽章:
1
2017金鸡报晓
日期:2017-02-08 10:33:21
2 [报告]
发表于 2010-03-31 13:06 |只看该作者
这个是c的基础,就是这么定的

论坛徽章:
1
2017金鸡报晓
日期:2017-02-08 10:33:21
3 [报告]
发表于 2010-03-31 13:08 |只看该作者
楼主可以写个测试程序看一下

论坛徽章:
0
4 [报告]
发表于 2010-03-31 13:14 |只看该作者
试过,证明书上是对的,但是不知道为什么这样

论坛徽章:
1
2017金鸡报晓
日期:2017-02-08 10:33:21
5 [报告]
发表于 2010-03-31 13:21 |只看该作者
这个nodes->a试过吗,我试了一下是合法的
数组名=数组地址=数组第一个元素的地址

论坛徽章:
0
6 [报告]
发表于 2010-03-31 13:32 |只看该作者
nodes数组在内存中的起始位置为200,
那么&nodes表示取nodes的地址就是200咯。
然后&nodes->a => &(nodes->a)表示取nodes结构的第一个数据的地址,因为它是结构的第一个数据,所以它的地址和结构的地址一样啊也是200.

论坛徽章:
0
7 [报告]
发表于 2010-04-01 10:31 |只看该作者
明白了,基础不扎实啊,谢谢

论坛徽章:
0
8 [报告]
发表于 2010-04-01 10:32 |只看该作者
回复 5# hzsjx


    是合法的,我看错了,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP