c++ 的指针和引用一直挺让人头疼。整了一段时间之后,大致理解
指针: 保存变量地址的整数,本身也是一个变量。
引用: 只是一个语法糖,在内存中不存在。
void addNum(int* num){
(*num)++;
}
void addNum(int& num){
num++;
}
int main(){
int c = 10;
int* ptr1 = &c;//& 是询问 c 的地址。
int** ptr2 = &ptr1;// ptr2保存ptr1的地址
**ptr2 = 11;
cout<< "cur val: "<<c<<endl; //输出 11
addNum(ptr1);
cout<< "cur val: "<<c<<endl; //输出 12
addNum(*ptr2);
cout<< "cur val: "<<c<<endl; //输出 13
int& ref = c;
addNum(ref);
cout<< "cur val: "<<c<<endl; //输出 14
return 0;
}
可以看到&简化了指针的使用,而指针只是一个语法糖,作为指针的拓展而已