C++Primer笔记-C++中的变量、声明和定义、初始化

对应章节:C++Primer第五版2.2节

何为变量

变量的基本形式为: 首先是类型说明符(intdouble),随后紧跟由一个或多个变量名(标识符)组成的列表,变量名以逗号分隔,最后以分号结尾。

标识符

C++的标识符由字母、数字、下划线组成,有以下命名规则

  1. 必须以字母或下划线开头,即不可以以数字开头
  2. 不可使用C++保留的关键字,如(int、double、do、while)等
  3. 不能出现两个连续的下划线
  4. 不能以下划线紧连大写字母开头
  5. 定义在函数体外的变量不能以下划线开头

(变量优雅的命名规范可见另一篇文章

代码整洁之道第2章-变量icon-default.png?t=N7T8https://blog.csdn.net/qq_52486404/article/details/133829312?spm=1001.2014.3001.5501

声明与定义的区别

声明的作用在于,使程序可以知晓该变量的存在。

定义的作用在于,负责创建与名字关联的实体。

如果想要声明一个变量,应该使用extern关键字,并且不要显式的初始化变量

~~~C++

extern int j; //声明变量

int j; //声明并定义变量

extern int j = 3; //定义变量。

~~~

如果要在多个文件中使用同一个变量,就必须将声明与定义分离。并且,定义必须且仅可以出现在一个文件中,其它文件要使用该变量时,需要声明该变量,但不可重复定义。

变量的初始化与赋值

当一个对象在创建时获得了一个特定的值,我们就说这个值被初始化了。当一次定义了多个变量时,对象的名字也就可马上使用了。

~~~C++

double price = 9.99, profit = price * 0.5;  // valid

~~~

在C++语言中,初始化与赋值是两个完全不同的操作:

初始化:初始化的含义不是赋值,而是在创建变量时赋予一个初始值

赋值:   把对象的当前值擦除,并以一个新的值来替代

列表初始化

列表初始化其实就是花括号初始化。这是C++11新标准的一部分。

~~~C++

int units_sold = {0};

int units_sold{0};

~~~

要注意,当用于C++内置类型的变量时,有一个重要特点:如果列表初始化中的初始值存在丢失信息的风险,则编译器会报错:

~~~C++

long double ld = 3.1415926;

int a{ld}, b = {ld}; //invlid, 因为ld在强制转化为int时,存在丢失信息的风险。

~~~

默认初始化

在定义变量时,如果没有为它赋予初值,那么会随着变量类型的不同、定义位置的不同有不同的响应。

  1. 内置类型变量 & 定义于函数体之外

自动初始化为0.

  1. 内置类型变量 & 定义于函数体之内

不会被自动初始化,可能会出现意想不到的错误。

类对象会各自决定其初始化方式(默认构造函数)。类在编写时可以强制要求显式初始化(不开放默认构造函数),这种情况下,如果不赋初值,将会报错。

名字的作用域

同一个名字出现在程序的不同位置,可能会指向不同的实体。

~~~C++

#include<iostream>

int reused = 42; //reused拥有全局作用域

int main(){

// 输出#1:全局reused, 42

std::cout<< reused << std::endl;

int reused = 0;

//输出#2:局部变量reused,0

std::cout<< reused << std::endl;

//输出#3:显式的访问全局变量reused,42

// 全局作用域没有名字,这里的 "::"就是指调用全局作用域

std::cout<< ::reused <<std::endl;

}

~~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值