int i = 42;
int *p;
int *&r= p;//从右往左读。
r = &i;
//r是一个对指针p的引用
const 限定符
const默认只能在文件内有效,而想要在多文件使用,在定义的时候就要使用extern限定。
extern const int p = 1024;
//其他文件
extern const int p;
常量引用,C++允许将引用绑定到const上
const int pi = 3;
const int &r1 = pi;
//valid
int &r2 = p1;
//invalid,不允许非常量引用绑定常量。
int i = 42;
const int &r3 = i;
//valid,将常量引用绑定到变量,
//不允许通过r3改变i的值,但是i可以改变其值
指向常量的指针
const double pi = 3.14;
const double *p = π
//指向常量的指针指向常量
//指向常量的指针也可以指向变量
double ans = 3.1415926;
p = &ans;
*p = 3.14
//invalid,不能通过p来修改ans的值
ans = 3.14
//valid,ans的值可以改变。
常量指针(const指针)
把*放在const之前用于说明该指针是常量,
与其他常量一样,定义的时候必须初始化。
double pi = 3.14;
double *const p = π
//p只能指向pi
*p = 24.0;
//valid
double k = 0.09;
p = &k
//invalid
用顶层const表示指针是一个常量,用底层const表示指向对象是一个常量。
常量表达式
值不会改变且在编译阶段就能得到计算结果的表达式称为常量表达式。
const int ll = 24;//yes
cosnt int limit = ll +1;//yes
int size = limit //no
...
const int sz = size +1;//no
C++ 允许使用constexpr来声明变量,验证变量的值是否为常量表达式。
类型别名
使用typedef
使用using
typedef double d;
//d是double的别名
//等价
using d = double
换行符和回车符\n表示换行符,将光标移动到下一行行首,/r表示回车符,将光标移动到本行行首。声明与定义变量声明规定了变量的类型和名字,而定义还要申请空间,或许为变量赋初值。使用extern将变量申明和定义分开。extern int j任何显式初始化的声明都将成为定义,覆盖extern的作用。多文件使用同一个变量,就必须声明和定义分开,在一个文件定义,而在多个文件声明。变量只能被定义一次。变量命名C++标准库保留字。用户定义的标识符不能以两个下划线开头,也不能以下划线加大写字母开头