C++变量

1. 初始化:在创建的时候同时赋值
1)    初始化中的"="与赋值的"="意义不同
2)    定义一个变量,如果不赋初值
    内建类型:函数外定义的初始值为0,函数内定义的不初始化(为undefined,复制或者操作该对象会出错)

2. 声明和定义
1)    带有赋初值的声明(declaration)为定义(definition)
2)    赋初值会覆盖extern,比如extern double pi = 3.14,该语句为definition,
             但是该语句只能出现在函数外,出现在函数内会报错。
3)    多文件共享同一个变量,只能在其中一个文件定义(define),而在其他文件中进行声明(但不能定义)

3. 符合类型
1)    引用:引用必须进行初始化,只能绑定一个对象,且绑定后不能再次绑定其他的;本身不是对象
2)    指针:可以不初始化,在声明周期能指向不同的对象;本身也是对象
        空指针:int* ptr = nullptr / 0 / NULL (NULL是通过预处理器转换为0,现在最好使用nullptr)
        void*指针:可以指向任意类型的地址,但是可操作的类型少,比较、作为参数传递、返回等,而不能通过它改变所指向的地址的值

        指针无法指向引用,因为引用不是对象;而引用可以作为指针的别名

4. 定义变量特殊情况
1)    多个变量:int* p1, p2;    p1是指针,p2是整型变量
2)    引用指针,int *&r;    查看一个变量的类型,从右往左读,最接近的一个就是它的数据类型

5. 常数据类型
1)    仅能进行那些不会改变其值的操作
2)    本地变量需在声明时赋初值;extern共享变量可以在头文件声明,在源文件中赋初值
3)    const int * p;    //指向常量的指针    const int *const p;    //指向常量的常指针

6. 类型别名: 两种定义类型别名的方式:typedef int iint;    using iint = int;

7. 新的类型指定方式
1)    auto告诉编译器从初始值推断出数据的类型,而不用自己去指定;     auto item = val1 + val2;
2)    decltype根据表达式来推断类型; decltype(f()) sum = x;则sum的类型由表达式f()决定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值