定义:若一个变量声明为T&,既引用时必须是T类型的变量或对象,或者能转换成T类型的对象进行初始话。
所以,一般地,引用的对象都是变量。
/*c++学习笔记之引用,指针变量的引用与引用的指针的区别*/ /*by SZU_Crayon,2018/1/30*/ /*指针变量的引用*/ int *a; //声明指针变量,a是一个指向int地址 int* &p=a; //正确,指针变量也是变量,p作为a的别名,改变p指向的值等同于对a进行相同处理 int b=8; p=&b; //此时 p &b a 表示同一地址 /*引用的指针*/ int a; int& ra=a; //正确 int& *p=&ra; //error 依据定义,引用必须是T类型的对象或变量,而此处试图引用地址,即引用的指针。
注意了,引用本身不是一种数据类型!它单单作为所引用对象的别名进行使用,所以引用本身不能再被引用。
int& *p=&ra ra已经作为a的引用,而该命令试图声明引用ra的地址。
重要的事情说三遍!
/*c++学习笔记之引用,指针变量的引用与引用的指针的区别*/ /*by SZU_Crayon,2018/1/30*/ #include<iostream> using namespace std; int main() { int a=6; int* &ra=&a; //[Error] invalid initialization of non-const reference of type 'int*&' from an rvalue of type 'int*' return 0; }引用注意类型相符原则:)
也就是说要引用指针变量,在声明的时候就把a声明为int*,保证声明引用的时候等号两边的变量(不带符号)表示的类型一致。