#include<iostream>
//const 和 引用的值必须初始化
//等号左侧是const或者const和引用,右侧可以是数字,普通变量-等号左侧是const和指针,右侧必须是const或者引用 ---
//---但是等号右侧是const,则左侧必须是const
using namespace std;
int j = 0; //这里规定i和j都必须定义在函数体外
constexpr int i = 2; //这里规定i和j都必须定义在函数体外
int main()
{
const int *p = nullptr; // p是一个指向整形常量 的指针
constexpr int * q = nullptr; // q是一个指向整数的 常量指针
constexpr const int *p0 = &i;
constexpr int *p1 = &j;
constexpr const int *p2 = &j;
const int *p3 = &j;//引用的本质是一个常量指针!
{//const引用让变量拥有只读属性 (不能通过引用来修改原值了)
int b ;//这里赋不赋初值都对
const int &a = b;
}
{//如果用一个对象去初始化另一个对象,则它们是不是const都无关紧要。
int c = 10;
const int d = c;
int e = d;
}
{//对常量的引用,引用及其对应的对象都是常量。
const int x = 1024;
const int & y = x;
// int & y1 = x; 不对
// y = 43; 不对,试图用一个非常量引用指向一个常量对象
}
{//指针引用===等号左侧是const和指针,右侧必须是const或者引用
int i1 = 2;
const int *j = 0;
const int *i2 = &i1;
const int *i3 = j;
}
system("pause");
}
不过仍旧有疑问:
就是i和j为什么必须定义到函数体外部,并且定义在内部显示