为了账号安全,请及时绑定邮箱和手机立即绑定

这串代码是申请了两个'动态存储空间'分别给p1和p2,还是只是申请一了段'动态存储空间'将地址同时给了p1和p2

p2=p1=(struct weapon*)malloc(sizeof(struct weapon));

正在回答

4 回答

同一块地址,p1=p2是为了让p2保存p1的内容,好可以给p1赋予新的内存地址,而保证上一块地址不会丢失

1 回复 有任何疑惑可以回复我~

我的理解对于这串指令是:(struct weapon*)malloc(sizeof(struct weapon)),它是一个结构体指针  函数,我们都知道指针的本质是地址,同时malloc的作用是获取内存,做个比喻的话,房子的门牌号和大小都确定下来了。p1,p2是指针变量,他们都指向房子的地址。记得老师说,p1是指向当前开辟的节点的地址,p2是指向上一个开辟节点的地址,那么当最开始的时候就只有一个地址,那么p1,p2都只指向第一个地址。这是我对这段代码的理解,如果有误,请大家指正,xiexie

1 回复 有任何疑惑可以回复我~
#1

qtw1998

你的理解我很赞同!
2017-12-05 回复 有任何疑惑可以回复我~

我同意后者,p1和p2同时保留了第一个申请的存储空间首地址。

1 回复 有任何疑惑可以回复我~

为什么不是

p1=(struct weapon*)malloc(sizeof(struct weapon));

p2=的意义何在,它有什么用啊

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

这串代码是申请了两个'动态存储空间'分别给p1和p2,还是只是申请一了段'动态存储空间'将地址同时给了p1和p2

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信