鱼C论坛

 找回密码
 立即注册
查看: 938|回复: 5

S1E21课后作业

[复制链接]
发表于 2021-12-12 21:01:18 | 显示全部楼层 |阅读模式

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

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

x
S1E21课后作业这个第六题答案我是看懂啥意思了,但我不理解这跟第六题错误有啥关系
我以为第六题错是错在取值运算符(*)是要获取指针变量指向的变量的值,而a不是一个指针变量,所以会报错。
S1E21作业.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-12 21:18:57 | 显示全部楼层
a=(int)&b;
printf("%d",*((int*)a));
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-12 22:15:48 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-17 18:01:02 | 显示全部楼层
本帖最后由 番杰 于 2021-12-17 18:02 编辑

小甲鱼的答案跟你的答案差不多,
就是说“什么类型的变量就要做什么事”
这里就相当于让一个int类型的变量去做int*类型变量的事,
就像本山大叔说的:“不是他的活,你让他干”
搁谁谁乐意呀,所以就报错了呗。

另外,如果你非得让它做“这件事”,就得进行强制类型转换,
把这项工作合理化,找一个“冠冕堂皇”的理由。
让int类型的变量暂时的(画重点:暂时的)变成int*类型的变量;
用法就像二楼大佬写的那样:
a=(int)&b;//把&b强制转换为int类型,a也是int类型,所以可以进行赋值。
printf("%d",*((int*)a));//(int*)a把a强制转换为int*类型,然后再对它进行解引用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-17 23:51:04 | 显示全部楼层
番杰 发表于 2021-12-17 18:01
小甲鱼的答案跟你的答案差不多,
就是说“什么类型的变量就要做什么事”
这里就相当于让一个int类型的变 ...

这个强制转化在S1E25才讲到(虽然前面也讲到了数据强制转化)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-17 23:51:56 | 显示全部楼层

懂了,%d要打印整型,而*a不是整型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-30 23:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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