三种不同方式输出变量val的值
#include<iostream>
using namespace std;
int main()
{
int a = 43;
int *p = &a;
*p = 10;//改变所指对象a值,即把a值改为10
int &val = *p;//val是p的引用(别名)
cout<<val<<endl;
}
或者
int main()
{
int a = 43;
int *p = &a;
*p = 10;
int **val = &p;//表示指针的指针,即val指向p又指向a,两次解引用val得到a的值
cout<<**val<<endl;
}
或者
int main()
{
int a = 43;
int *p = &a;
*p = 10;
int *&val = p;//引用不是对象,所以不能定义指向引用的指针,但指针是对象,存在指针的引用。该句表示val是指针p的引用
cout<<*val<<endl;
}
参考《C++ primer》P52