#include<iostream>
using namespace std;
int main(){
int a = 100;
cout << "1:" << a << endl;
int &ar = a;
cout << "2:" << ar << endl;
int *p = &a;
cout << "a address(p) :" << p << " 3:" << *p << endl;
int *pr2 = &ar;//引用变量的地址(其实没取到引用变量的地址),还是原来变量的地址
cout << "ar address(pr2):" << pr2 << " 4. *pr2:" << *pr2 << endl;//结果取引用的地址和a的地址一样
/**
pointerAndReference.cpp:15:13: error: invalid conversion from 'void*' to 'int*'
[-fpermissive]
int *pr3 = &&ar;
*/
//int *pr3 = &&ar;
//cout << pr3 << endl;
/*
cannot declare pointer to 'int&'
*/
//int &* pr1 = ar;//error
// cannot declare pointer to 'int&'
//int &* pr = p; //指向引用的指针 error 也许是因为不能对引用取地址!
int *& pr = p;//OK ,指针引用相当于指针的别名
cout << "address(pr):" << pr << " 5:" << *pr << endl;
int ** pr4 = &p;
cout << "pointer address:" << pr4 << " &p:" << &p << endl;
return 0;
}
C:\Users\jackz\Desktop\codes\cpp>g++ pointerAndReference.cpp
C:\Users\jackz\Desktop\codes\cpp>a
1:100
2:100
a address(p) :0x28feec 3:100
ar address(pr2):0x28feec 4. *pr2:100
address(pr):0x28feec 5:100
pointer address:0x28fee8 &p:0x28fee8