C++学习笔记3——变量

1,左值与右值
左值:既能出现在赋值语句的左边,又能出现在赋值语句的右边的表达式;
右值:只能出现在赋值语句的右边而不能出现在赋值语句的左边的表达式。

变量是左值,数字字面值、数字表达式是右值。
通常左值比右值适用范围更广,但是有一个例外:const 引用可以指向右值,但不能指向左值。

2,标识符(变量名即变量的标识符,函数名是函数的标识符)
(1)必须以字母或下划线开头,区分大小写;
(2)不得占用C++的63个关键字和11个操作符替代名;
(3)C++03和C++11的标准都规定,标识符不能包含两个连续的下划线,也不能以一个下划线和一个大写字母开头。定义在函数外的标识符(如全局变量)不能以下划线开头。标准原文如下:
— Each name that contains a double underscore (_ _) or begins with an underscore followed by an uppercase letter (2.11) is reserved to the implementation for any use.
— Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.Such names are also reserved in namespace ::std.
但是,在实际应用中编译器,不管是g++还是visual studio并不一定会为此报错。
个人理解:这样的标识符是“ is reserved to”(保留给)编译器用的,但可能编译器不会去检查标识符是否违反了这条规则。如果编译器刚好没用这个标识符,那么就不会因有冲突而报错。

3,自动初始化
(1)内置类型:
        a,定义在函数体外,全部初始化为0;
        b,定义在函数体内,
                 (i)自动变量,不自动初始化,值未知;
                 (ii)static变量,第一次调用时初始化为0,以后不初始化;
(2)类类型
        使用默认构造函数

4,初始化的两种方式
(1) =,被称为复制初始化;
(2) (),被称为直接初始化

5,声明与定义
(1)有初始化式的必定是定义,不管有没有使用extern;
(2)如果有初始化式,又使用了extern,则该定义只能位于函数外部;
(3)不包含初始化式,且含有extern,则为声明,不是定义;
(4)如果不包含extern,不管有没有初始化式,都是定义;
(5)同一个变量,只能定义一次,但可以声明多次;
if(有初始化式) || (没有extern)
{
         表达式为定义;
         if(有初始化式) && (有extern)
         {
                  该定义只能位于函数外部;
   //注意,C++中非const变量默认就是带extern属性的,所以加不加extern关系不大
   //但是,const变量默认不是extern属性的,所以定义用于其他文件的const变量时,就需要加extern
         }
}
else
{
         表达式为声明;
}

6,作用域
全局作用域(global scope)
局部作用域(local scope)
语句作用域(statement scope)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值