感覺指針和引用之間的奇妙,寫了兩端代碼以搞清楚指針引用和引用的用法
讀C++primer 一書
感覺指針和引用之間的奇妙,寫了兩端代碼以搞清楚指針引用和引用的用法
#include <iostream>
using namespace std;
int main(void)
{
int ival1 = 1024 ;
int *pival1 = &ival1; //ival的指針
int *& pi1 = pival1; //ival的指針的引用
int ival2 = 2048;
int *pival2 = &ival2; //iva2的指針
int *& pi2 = pival2; //iva2的指針的引用
cout<<"ival1: "<<ival1<<endl;
cout<<"pival1:"<<pival1<<endl;
cout<<"pi1: "<<pi1<<endl;
cout<<"ival2: "<<ival2<<endl;
cout<<"pival2:"<<pival2<<endl;
cout<<"pi2: "<<pi2<<endl;
cout<<"-------------------"<<endl;
*pi1 = *pi2; //解除指針引用
cout<<"ival1: "<<ival1<<endl;
cout<<"pival1:"<<pival1<<endl;
cout<<"pi1: "<<pi1<<endl;
cout<<"ival2: "<<ival2<<endl;
cout<<"pival2:"<<pival2<<endl;
cout<<"pi2: "<<pi2<<endl;
/*out put
ival1: 1024
pival1:0xbfffe6a4
pi1: 0xbfffe6a4
ival2: 2048
pival2:0xbfffe698
pi2: 0xbfffe698
-------------------
ival1: 2048
pival1:0xbfffe6a4
pi1: 0xbfffe6a4
ival2: 2048
pival2:0xbfffe698
pi2: 0xbfffe698
*/
//輸出說明*pi1 = *pi2;
//之間的賦值并未改變指針引用的值,即地址的值
//而是改變了引用對象的值
}
///////////////////////////////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
int main(void)
{
int ival1 = 1024 ;
int *pival1 = &ival1;
int *& pi1 = pival1;
int ival2 = 2048;
int *pival2 = &ival2;
int *& pi2 = pival2;
cout<<"ival1: "<<ival1<<endl;
cout<<"pival1:"<<pival1<<endl;
cout<<"pi1: "<<pi1<<endl;
cout<<"ival2: "<<ival2<<endl;
cout<<"pival2:"<<pival2<<endl;
cout<<"pi2: "<<pi2<<endl;
cout<<"-------------------"<<endl;
pi1 = pi2;
cout<<"ival1: "<<ival1<<endl;
cout<<"pival1:"<<pival1<<endl;
cout<<"pi1: "<<pi1<<endl;
cout<<"*pi1: "<<*pi1<<endl;
cout<<"ival2: "<<ival2<<endl;
cout<<"pival2:"<<pival2<<endl;
cout<<"pi2: "<<pi2<<endl;
cout<<"*pi2: "<<*pi2<<endl;
/*out put
ival1: 1024
pival1:0xbffff5a4
pi1: 0xbffff5a4
ival2: 2048
pival2:0xbffff598
pi2: 0xbffff598
-------------------
ival1: 1024
pival1:0xbffff598
pi1: 0xbffff598
*pi1: 2048
ival2: 2048
pival2:0xbffff598
pi2: 0xbffff598
*pi2: 2048
*/
//輸出說明,指針引用之間的賦值只改變指針的值
//引用對象的值沒有改變
}