int a = 3; int *p = &a; //定义指针p指向变量a *p = 4; //*p代表a的值 int b = 5; p = &b; //p指向变量b *p = 6; //此时*p代表b的值 int c[3] = {2,5,7}; p = c; //此时p是指向数组c的指针,具体指向数组的第一个元素,即(&c[0]/p/c)三种写法等价
int a = 3; int &b = a; //定义引用b为变量a的引用,即a的别名(可理解为a的“外号”) b = 6; //给b赋值6即给a赋值6,此时a的值变为6 引用经典用法: void ValueExchange(int &a,int &b) { int temp = 0; temp = a; a = b; b = temp; } ValueExchange(a,b); //调用函数实现值交换,和c语言指针相比,c++的引用显然更加简便
const int a = 3; //常量a = 3,const的含义即是被const修饰的值拒绝被修改 const int *p; int const *p; //两种写法等价,此时无法用*p来改变p指向的变量的值,因为*p被const所修饰 int * const p; //此时p只能指向一个变量,之后不能指向其他变量,因为p被const修饰 const int &b; int const &b; //两种写法等价,&b无法被修改,即b引用的变量无法被修改,常用于上面的值交换类型函数,保护传入的变量数据的安全,拒绝被函数内部修改