[cpp primer随笔] 01.变量

初始化

在定义变量时我们可以对其进行初始化。C++中使用的初始化方式有以下几种类型:

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

其中使用花括号的初始化方法为被称作列表初始化,是C++ 11后支持的特性。在此之前,花括号仅在初始化数组等有限场景下有效。与正常初始化不同,使用列表初始化时,若存在精度损失,则会编译出错。例如:

int i = { 114.514 }; // 编译出错
// error: type 'double' cannot be 
//        narrowed to 'int' in initializer list.

默认初始化

如果我们在定义变量时没有对其进行初始化,则该变量将会进行执行默认初始化操作。该操作遵循以下原则:

  • 任何函数体外的基本类型变量会自动初始化为0。
  • 任何函数体内的基本类型变量,其值未定义。读写该变量可能会引发错误(实际测试未发现这种情况,原因待定)
  • 未显示初始化的类对象,其值由其构造函数决定,C++中很多类均支持默认初始化,例如string初始化为空串"",vector初始化为空容器等。

初始化与赋值的区别

初始化与赋值在C++中概念不同。初始化是在创建变量内存空间时给予该空间初始值,而赋值则是将该内存空间的数据擦除,再赋新值。

声明与定义的区别

声明用于让程序知晓一个变量的存在,而本身不会分配内存空间。而定义的目的在于创建一个变量,是要分配空间的。在C++中,我们在使用另一个文件定义的变量前,必须先在本文件中使用extern关键字对其进行声明。

int i; // 定义
extern int j; // 声明

此外,任何包含显式初始化的声明均视作定义。这也就是说,我们可以对extern关键字声明的变量赋初始值,这会抵消掉extern的作用,使该语句变为定义语句。

extern int k = 0; // 定义
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++ Primer(第五版)》是一本深入浅出、权威全面的C++教程,并且非常适合初学者。这本书以系统的方式介绍了C++语言的基础知识,包括语法、数据类型、控制结构等。通过大量的实例和练习,读者能够更好地理解C++的概念和应用。 这本书的第五版是经过完全修订和更新的,以跟上C++11、C++14和C++17的最新标准。它包含了对新特性的详细解释,例如自动类型推导、lambda表达式、增强的类型检查等等。同时,书中还介绍了C++标准库和常用的编程技巧,如字符串处理、容器、迭代器等,以帮助读者更好地应用C++语言进行程序开发。 《C++ Primer(第五版)》的特点之一是它的逻辑性和结构性。每个章节都按照逐步深入的方式呈现,从基本概念开始,然后逐步引入更高级的内容。每个概念都配有大量的例子和实践题目,读者可以通过反复实践来巩固和加深对知识的理解。 此外,这本书还有一个非常有用的附录和索引,方便读者查找和理解C++语言中的各种概念和特性。 总的来说,如果你想系统学习和掌握C++编程语言,我强烈推荐你阅读《C++ Primer(第五版)》。它的全面性和权威性能够帮助你建立牢固的编程基础,并且对于学习其他高级主题和应用也提供了很好的引导。无论你是初学者还是有一定编程基础的人,这本书都能够帮助你进一步提升自己的C++编程能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值