您好,登錄后才能下訂單哦!
指針:指針是一個變量,只不過這個變量存儲的是一個地址,指向內存的一個存儲單元;而引用跟原來的變量實質上是同一個東西,只不過是原變量的一個別名而已.
int a=1;int *p=&a; int a=1;int &b=a;
上面定義了一個×××變量和一個指針變量p,該指針變量指向a的存儲單元,即p的值是a存儲單元的地址。
而下面2句定義了一個×××變量a和這個×××a的引用b,事實上a和b是同一個東西,在內存占有同一個存儲單元。
#include<iostream> #include<string.h> using namespace std; void swap(char *&a, char *&b) /*使用引用指針做參數*/ { char *temp; temp=a; /*進行數值的交換*/ a=b; b=temp; } void swap2(int *a,int *b)//傳地址 { int temp=*a; *a=*b; *b=temp; } void swap3(int &c,int &d)//引用 { int temp; temp=c; c=d; d=temp; } int main() { char *stra="one world"; /*字符串指針*/ char *strb="one dream"; int a=1,b=2; int c=3,d=4; cout<<"地址傳遞:"<<endl; cout<<"swap前:a="<<a<<" "<<"b="<<b<<endl; swap2(&a,&b); cout<<"swap后:a="<<a<<" "<<"b="<<b<<endl; cout<<"引用傳遞:"<<endl; cout<<"swap前:c="<<c<<" "<<"d="<<d<<endl; swap3(c,d); cout<<"swap后:c="<<c<<" "<<"d="<<d<<endl; cout<<"引用傳遞:"<<endl; cout <<"swap前stra: "<<stra<<endl; /*輸出字符串*/ cout<<"swap前strb: "<<strb<<endl; swap(stra,strb); /*傳入地址*/ cout<<"swap后"<< endl; cout<<"stra: "<<stra<<endl; /*輸出字符串*/ cout<<"strb: "<<strb<<endl; return 0; }
1.用指針傳遞參數,可以實現對實參進行改變的目的,是因為傳遞過來的是實參的地址.
2.引用作為函數參數進行傳遞時,實質上傳遞的是實參本身,即傳遞進來的不是實參的一個拷貝,因此對形參的修改其實是對實參的修改,所以在用引用進行參數傳遞時,不僅節約時間,而且可以節約空間。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。