C++ primer 查漏补缺三 :初始化

初始化

初始化: 创建变量时赋予其一个初值
赋值:把对象的当前值擦除,用一个新值代替

初始化和赋值的区别

初始化的几种形式

int i=0;
int i={0};
int i{0}
int i(0)

其中花括号的形式叫做 “ 列表初始化

当用于内置类型的变量时,这种初始化形式有一个重要特点:如果我们使用列表初始化且初始值存在丢失信息的风险,则编译器将报错:

long double ld = 3.1415698
int a{ld} , b={ld}; //错误
int i = ld; t(ld);//正确 丢失部分值

使用long double的值初始化int变量时可能丢失数据,所以编译器拒绝了a和b的初始化请求。其中,至少ld的小数部分会丢失掉,而且int也可能存不下ld的整数部分。

默认初始化

如果定义变量时没有指定初值,则变量被默认初始化(default initialized),此时变量被赋予了“默认值”。默认值到底是什么由变量类型决定,同时定义变量的位置也会对此有影响。

如果是内置类型的变量未被显式初始化,它的值由定义的位置决定。定义于任何函数体之外的变量被初始化为0。

一种例外情况是,定义在函数体内部的内置类型变量将不被初始化(uninitialized)。一个未被初始化的内置类型变量的值是未定义的,如果试图拷贝或以其他形式访问此类值将引发错误。

每个类各自决定其初始化对象的方式。而且,是否允许不经初始化就定义对象也由类自己决定。如果类允许这种行为,它将决定对象的初始值到底是什么。

声明和定义

为了允许把程序拆分成多个逻辑部分来编写,C++语言支持分离式编译机制,该机制允许将程序分割为若干个文件,每个文件可被独立编译。
如果将程序分为多个文件,则需要有在文件间共享代码的方法。例如,一个文件的代码可能需要使用另一个文件中定义的变量。一个实际的例子是std::cout和std::cin,它们定义于标准库,却能被我们写的程序使用。

为了支持分离式编译,C++语言将声明和定义区分开来。

声明(declaration)使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。
定义(definition)负责创建与名字关联的实体。

变量声明规定了变量的类型和名字,在这一点上定义与之相同。
定义还申请存储空间,也可能会为变量赋一个初始值。

变量能且只能被定义一次,但可以声明很多次
如果想声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显式地初始化变量:

extern int i; //声明i而非定义i
int j; // 声明且定义i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 《C Primer》(第5版)是一本C语言的入门教材,对于初学者来说是一本很好的学习资料。它以中文回答了大量的C语言习题,为读者提供了一个循序渐进的学习过程。 这本书有一些优点,首先是适合各种学习条件的读者。无论是想要在大学学习C语言的学生,还是自学编程的初学者,都可以从这本书中受益。其次,书中的内容易于理解。作者采用简明易懂的语言,讲解了C语言的基础知识和编程技巧,帮助读者快速掌握C语言。第三,书中的习题丰富多样,涵盖了从简单到复杂的各个方面。这些习题不仅有助于加深对C语言知识的理解,还可以帮助读者锻炼编程能力。 由于本人无法提供PDF文档,请读者自行询并下载该书的PDF版本。这本书不仅仅是一个习题集,它还包含了大量的示例代码和案例分析,这些都对读者的学习和实践提供了很好的帮助。 总之,《C Primer》(第5版)是一本很棒的C语言学习资料,读者可以通过习题的练习提高自己的编程能力,掌握C语言的基础知识。希望读者能够借助这本书的帮助,快速地学会C语言编程。 ### 回答2: " C Primer习题集:第5版pdf " 是一本同名教材的习题集,针对C语言编程进行了深入的练习。该习题集的PDF版本可以在网络上进行下载。 这本习题集是为了帮助C语言初学者提高他们的编程技能。它从基础知识开始,逐渐深入到更高级的概念和技术。习题集的章节组织结构与原版教材一致,旨在提供一个系统和综合的学习体验。 这本习题集涵盖了许多重要的编程主题,如变量、运算符、控制流程、数组、字符串、指针、结构体和文件。每个章节都包含大量的习题,涵盖了不同难度级别的问题。这些习题可帮助学生巩固已学知识,并提供了实践机会以应用所学的概念。 与原版教材相比,该习题集以问题为驱动,需要学生进行自我思考和解答。通过反复实践和解决问题,学生可以更好地理解C语言的概念和技术。 总的来说, C Primer习题集:第5版pdf 提供了一个实践性强、系统性好的学习工具,适合想要提高他们C语言编程技能的人使用。通过完成这些习题,学生可以更深入地理解C语言的各个方面,并在实际项目中应用所学的知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值