关于C Primer Plus(第5版)的一个疑问?望高手指点!

hawkhein hawkhein 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
中文版 p270页中下倒数第13行到第8行。是用来证明倒数第18行的。
下面是复制的英文原版:
int * p1;

const int * p2;

const int ** pp2;

p1 = p2; // not valid -- assigning const to non-const

p2 = p1; // valid -- assigning non-const to const

pp2 = &p1; // not valid -- assigning non-const to const 相当于我说的倒数第18行。
书中说两层间接运算,这样赋值不安全。理由是下面的例子。
(相当于中文版倒数第13行到第8行)
const int **pp2;

int *p1;

const int n = 13;

pp2 = &p1; // not allowed, but suppose it were

*pp2 = &n; // valid, both const, but sets p1 to point at n

*p1 = 10; // valid, but changes const n
他这里说n的值被改变了。其实,他这里举例不对啊.最后一步赋值,在这本书从里前面p263页里说了,一个没有初始化的p1是不可以赋值的。所以这个例子不能作为说明前面的理由。那么前面说两层间接运算,这样赋值不安全。这句话还要商榷了。。。

到底安不安全?有没有更合适的例子?

...全文

相关推荐

c primer plus练习答案PDF版

### C Primer Plus:第五版《C Primer Plus》是由Stephen Prata编写的经典C语言教材,第五版提供了最新的C语言标准的全面覆盖,适合初学者和有一定基础的程序员学习与参考

ggfysj

C Primer Plus 第6版 编程练习 chapter 17

编写一个函数接受3个参数,一个数组名(内含已排序的整数),该数组的元素个数和待查找的整数。如果待查找的整数在数组中,那么该函数返回1,如果该数不在数组中,该函数则返回0。当用户选择查找宠物时,程序应询问用户该宠物的名字,然后列出该名字的所有宠物(及种类)。结果显示为字符串的逆序。重写list.c(程序清单17.5)中的函数以适应新的定义,并通过films.c(程序清单17.4)测试最终代码。重写list.c(程序清单17.5)中的函数以适应新的定义,并通过films.c(程序清单17.4)测试最终代码。

Bell_corp

C++ Primer Plus 第6版 中文版课后代码习题答案

《C++ Primer Plus 第6版 中文版》是一本深入浅出的C++学习书籍,其课后代码习题答案是学习过程中不可或缺的部分。

苦走一口田

C++-primer-plus(第6版)中文版-编程练习答案(word版).pdf

C++ Primer Plus第6版中文版编程练习答案本资源为C++ Primer Plus第6版中文版编程练习答案,涵盖了C++基础知识的多个方面,包括基本语法、数据类型、函数、输入输出等。

月亮677

C Primer Plus 附录A 复习题答案

《C Primer Plus 附录A 复习题答案》提供了对C语言基础知识的全面回顾和解答,是学习C语言过程中的重要参考资料。

weixin_40186813
评论 4
收藏 已收藏
分享
返回顶部
hawkhein
C语言 70,040 成员 243,237 内容