C++ quote:
A reference in C + + is an alias, that is to say, it is another name of an existing variable. Once the reference is initialized to a variable, the reference name or variable name can be used to point to the variable
C + + references and pointers:
References and pointers are easy to confuse, but there are the following differences between them:
1. There is no empty reference in the reference. The reference must be connected to a legal space
2. Once a reference is initialized as an object, it cannot point to another object
3. References must be initialized at creation time
Basic syntax of reference:
1. Initialization:
int i = 10; int &a = i;//Type & alias = original name
//Reference to array int arr[5] = {1,2,3,4,5}; //Method 1: int (&prArr)[5] = arr; //Mode two: typedef int(ARRAYREF)[5];//An array of type int with 5 elements ARRAYREF &prArr1[5] = arr;
2. Parameter transfer:
int main() { int a = 10; int b = 12; swap3(a,b); system("pause"); return EXIT_SUCCESS; } void swap3(int &x, int &y) {//int &x <==>int &x = a; int temp = y; y = x; x = temp; }
matters needing attention:
1. Must refer to a legal space
Do not return a reference to a local variable. If the return value is a reference, the function call can be used as an lvalue
Essence: the essence of reference in C + + is a pointer constant
int a = 10; int &b = a; //Compiler automatically converts to int * const B = & A; b = 20; //Internal discovery B is a reference, automatically converted to * b = 20
Reference to pointer:
void AllocatePointer(Teacher** teacher) { *teacher = (Teacher *)malloc(sizeof(Teacher)); (*teacher)->m_age = 20; } void AllocateReference(Teacher*& tea) {//Teacher*& tea = teacher; tea->m_age = 30; //Teacher** const tea = &teacher; } int main() { Teacher a; Teacher* teacher = NULL;//Define a pointer variable to the Teacher structure type teacher = &a; Teacher** t = &teacher;// AllocatePointer(&teacher); cout << teacher->m_age << endl; AllocateReference(teacher); cout << teacher->m_age << endl; system("pause"); return EXIT_SUCCESS; }
Reference to constant:
Literal quantity cannot be assigned to a reference, but can be assigned to a const reference
const int &re = 10;