c++primer学习笔记-----2.2变量

来源:互联网 发布:淘宝网触屏版官网 编辑:程序博客网 时间:2024/06/05 20:48

变量提供一个具名的、可供程序员操作的存储空间;变量的数据类型决定着变量所占空间的大小布局方式变量能参与的运算


2.2.1 变量定义


【在c++ 语言中,初始化和赋值是两个完全不同的操作(所以有些数据类型必须在定义的同时初始化,如引用类型常量类型)。】


【初始化有多种形式:

int a = 0;int a = {0};int a{0};int a(0);
用花括号来初始化变量称为列表初始化,当其用于内置类型的初始化时,如果初始值存在丢失信息的风险,则编译器会报错;

使用列表初始化能增强程序的安全性。】


【如果内置类型的变量未被显式初始化,它的值由定义的位置决定:

定义于任何函数体之外的变量被初始化为0;

在函数体内部的内置类型变量将不被初始化。


【每个类各自决定其初始化对象的方式,比如是否允许不经初始化就定义对象,如果类允许这种行为,它也将决定对象的初始值。


2.2.2 变量声明和变量定义的关系


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

【变量声明也规定了变量的类型和名字。
如果想声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显式地初始化变量。】

【在函数体内部,如果试图初始化一个由extern 关键字标记的变量,将引发错误。】

2.2.3 标识符


【c++ 的标识符由字母、数字和下划线组成,其中必须以字母和下划线开头。
c++ 保留了一些名字供语言本身使用,这些名字不能被用作标识符。
用户自定义的标识符中不能出现两个连续的下划线,也不能以下划线紧连大写字母开头。
定义在函数体之外的标识符不能以下划线开头。

【变量命名有许多约定俗成的规范:
标识符要能体现实际含义;
变量名一般用小写字母;
用户自定义的类名一般以大写字母开头;
如果标识符由多个单词组成,则单词间应有明显区分(如使用下划线,或从第二个单词开始首字母大写)。

2.2.4 名字的作用域


【同一个名字在不同的作用域中可能指向不同的实体。
名字的有效作用域始于名字的声明语句,以声明语句所在的作用域末端为结束。
for(int i = 0; i < 10; i++)cout << i;
该段代码中,变量i 的作用域为for 循环语句内部。】

【作用域中一旦定义了某个名字,它所嵌套着的所有内层作用域都能访问该名字。
也允许在内层作用域中重新定义外层作用域中已有的名字,此时在内层作用域中会将外层作用域的相同名字的变量屏蔽。
0 0
原创粉丝点击