S1E21课后作业
S1E21课后作业这个第六题答案我是看懂啥意思了,但我不理解这跟第六题错误有啥关系{:10_266:}我以为第六题错是错在取值运算符(*)是要获取指针变量指向的变量的值,而a不是一个指针变量,所以会报错。 a=(int)&b;
printf("%d",*((int*)a)); jhq999 发表于 2021-12-12 21:18
{:10_266:} 本帖最后由 番杰 于 2021-12-17 18:02 编辑
小甲鱼的答案跟你的答案差不多,
就是说“什么类型的变量就要做什么事”
这里就相当于让一个int类型的变量去做int*类型变量的事,
就像本山大叔说的:“不是他的活,你让他干”
搁谁谁乐意呀,所以就报错了呗。
另外,如果你非得让它做“这件事”,就得进行强制类型转换,
把这项工作合理化,找一个“冠冕堂皇”的理由。
让int类型的变量暂时的(画重点:暂时的)变成int*类型的变量;
用法就像二楼大佬写的那样:
a=(int)&b;//把&b强制转换为int类型,a也是int类型,所以可以进行赋值。
printf("%d",*((int*)a));//(int*)a把a强制转换为int*类型,然后再对它进行解引用。 番杰 发表于 2021-12-17 18:01
小甲鱼的答案跟你的答案差不多,
就是说“什么类型的变量就要做什么事”
这里就相当于让一个int类型的变 ...
{:10_266:}这个强制转化在S1E25才讲到(虽然前面也讲到了数据强制转化) jhq999 发表于 2021-12-12 21:18
懂了,%d要打印整型,而*a不是整型
页:
[1]