可能看到第二部分,改变了引用指向对象指针.(所以引用可以对引用对象指针直接操作)
去掉每二部分,只改变引用指向指针的变量内容的变量的值.
(注意只针对一般指针而不引用PCC而言
*P运算符表一个变量,P指向的变量.
这个变量的地址是&*P)
而引用指向的变量,引用就等价这个变量,所以,PCC指向一个指针变量,就等价这个指针注意是新的指针变量,(可以再汇编看一下),如果指向是一个数字变量,就等价这个数字变量,改变引用就能改变这个变量.
*&p和P应是一个变量。(对于引用来说,PCC指向一个指针变量,不能表示出只能在汇编看到,所以COUT出PCC这个引用就相当这个新的指针,而*PCC却是这个指针指向的结果数字变量.和AB等价.
因为NEW指针,不能表现出,只能通*PCC=AB这种形式,来改变.就改变变量AB的内容.
New指针和PCC并没有改变.只不过改变*PCC等价改变XBB变量.
int ccb=88;
int *&pcc=&ccb;
cout<<"pcc:"<<pcc<<endl;
cout<<"&ccb:"<<&ccb<<endl;
cout<<"ccb:"<<ccb<<endl;
cout<<"---------------"<<endl;
int xxb=99;
*&pcc=&xxb;
cout<<"&xxb:"<<&xxb<<endl;
cout<<"*&pcc:"<<*&pcc<<endl;
cout<<"pcc:"<<pcc<<endl;
cout<<"*pcc:"<<*pcc<<endl;
cout<<"xxb:"<<xxb<<endl;
cout<<"&ccb:"<<&ccb<<endl;
cout<<"ccb:"<<ccb<<endl;
cout<<"---------------"<<endl;
int xxx=100;
// *&pcc =&xxx;
*pcc=xxx;
cout<<"&xxx:"<<&xxx<<endl;
cout<<"*&pcc:"<<*&pcc<<endl;
cout<<"pcc:"<<pcc<<endl;
cout<<"*pcc:"<<*pcc<<endl;
cout<<"xxb:"<<xxb<<endl;
cout<<"&ccb:"<<&ccb<<endl;
cout<<"ccb:"<<ccb<<endl;
以下对复杂声明的理解.
// char a='a';
// char *b=&a;
// char ** p1=&b;
//const char **p2; // pointer to pointer to const char
// char x2='x';
// const char *bx2=&x2;
// const char **p2=&bx2;
//char * const * p3; // pointer to const pointer to char
// char hh1 ='d';
//char * const hh3=&hh1;
//char * const *p3=&hh3;
//const char * const * p4; // pointer to const pointer to const char
//const char a1='d';
//const char * const a2=&a1;
//const char * const * p4=&a2;
//char ** const p5; // const pointer to pointer to char
//char dd='d';
// char * dd1=ⅆ
//char * * const p5=&dd1;
//const char ** const p6; // const pointer to pointer to const char
//const char a='e';
//const char * dd =&a;
//const char ** const p6=ⅆ
//char * const * const p7; // const pointer to const pointer to char
//char a='d';
//char * const tt=&a;
//char * const * const p7=&tt;
//const char * const * const p8; // const pointer to const pointer to const char
//const char a='b';
//const char * const cc=&a;
//const char * const * const p8=&cc;