1樓:匿名使用者
精華知識 收藏 **到qq空間 c++中,引用與取位址有什麼區別? 15 [ 標籤:c++ 區別,引用,位址 ] 希望可以詳細解釋下,最好帶有例項!
2009-12-23 13:09 精華知識 所謂引用就是為物件起乙個別名。例如變數b = a,b就是a的乙個引用。
對b的任何操作等同於對a的操作,也就是說,如果你改變了b的值,同時a的值也會發生改變。b就是a的另外乙個名字,他們實質是同乙個變數。就好比是同乙個人,只不過穿著不同的衣服而已。
至於引用的用處,給你舉乙個簡單的例子,比如乙個交換兩個值的函式swap(int a, int b),如果將兩個值帶進去,發生交換的只是形參a和b,因為函式結束的時候這兩個引數的生命週期結束了,換句話說,實參a和b的值並未發生交換。而如果swap(int &a,int &b)則不同,他的引數是a和b的引用,也就是說函式中的a和b就是你帶入的實參,當函式中的a和b發生變化時,被引用的值在同時也發生了變化,而不會受到函式宣告週期的影響。取位址則顧名思義,就是取得物件的位址,通過指標來操作物件,轎祥也可以達到引用的效果,它不是直接對物件進行操作,而是根據物件的位址。
與引用不同的是,引用是不佔用儲存空間的,而如果用指標指向物件位址的時候會有自己的儲存空間。舉個簡單的例子,swap(int *a, int *b), a和*b是指向實參的指標,即他們有實參的位址,而我們知道a和隱敗b的位址是沒有改變的灶帆顫,那麼根據他們的位址就可以操作他們的值,也就不用考慮函式生命週期了。舉的例子比較簡單,實際中的應用比這個複雜的多。
只要能理解就好。
2樓:匿名使用者
樓主太長了。。。名引用,對變檔罩量起乙個小名,然後通過小名就可以操作變數。而衫弊如果不加名引用,僅行塌鬧僅是把變數的值傳遞進去而已,無法修改原來變數的值。
當然也可以通過指標來訪問物件。。。void swap(int *a,int *b) 名引用:void swap(int &a,int &b)
3樓:匿名使用者
這要看你形參放的位置,如果放在前面就不需要定義,放在後面就需要定義,因為計算機是按順序檢查語句的。
c語言中什麼叫形參,什麼叫實參?來權威解釋,我的理解就是形式引數和實際引數。在被呼叫的函式里的是形
4樓:匿名使用者
可以這樣理解bai
形參出現在函du數定義中,在整個函zhi數體內都可dao以使用, 離開該函式。
內則不能使用。容實參出現在主調函式中,進入被調函式後,實參變數也不能使用。 形參和實參的功能是作資料傳送。
發生函式呼叫時, 主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的資料傳送。1.形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時, 即刻釋放所分配的記憶體單元。
因此,形參只有在函式內部有效。 函式呼叫結束返回主調函式後則不能再使用該形參變數。 2.
實參可以是常量、變數、表示式、函式等, 無論實參是何種型別的量,在進行函式呼叫時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應預先用賦值,輸入等辦法使實參獲得確定值。 3.
實參和形參在數量上,型別上,順序上應嚴格一致, 否則會發生「型別不匹配」的錯誤。 4.函式呼叫中發生的資料傳送是單向的。
即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函式呼叫過程中,形參的值發生改變,而實參中的值不會變化。
5樓:
你的理解是正確的,自定義的函式括號裡的引數是形式引數(簡稱形參),在呼叫處傳入(一般是主函式,也可以是其它獨立函式)的引數是實際引數(簡稱實參).
6樓:網友
為了更好的區別現在有這樣的名稱,形式參量和實際引數。參量就是被呼叫函式里的,引數是呼叫函式里的。
7樓:哈嘍大師
形參就是程式中假設的引數,就像y=x一樣,x就是形參,那麼x=1就叫實參。
c中函式呼叫,陣列的形參和實參與變數的實參和形參有什麼不同
8樓:網友
這是兩種函式引數傳遞方法:
1,你開始學的是值傳遞,即形參把實參的值複製過去,他們根本上是兩個不一樣的變數,只是值相同而已,所以對形參的任何操作不影響實參。
2,陣列名是陣列首元素的位址,這是指標傳遞,把陣列的位址傳了過去,自定義函式拿到位址對陣列進行操作,將影響這個陣列。(注意這裡沒有複製,而是間接訪問陣列本身)
c中實參和形參有什麼區別,c 中形參與實參的本質區別是什麼(例如儲存機理等)
無法無天 實參和形參被分配的位址不同。可以這樣比喻,實參是一間別墅,而形參是另一間別墅。實參裡的東西被複製了乙份搬到了形參裡面,而形參這件別墅裡面的東西被扔了或者新增了新的東西是不會對實參這件別墅造成影響的。如果不用指標或者引用,實參只能向形參裡面傳遞東西 值 就好比上面的舉例,實參的東西能拷貝乙份...
c語言說形參不能改變實參的值,為什麼這個賦值語句可以
因為是在傳地址,值傳遞時候就不能改變實慘值了 cpystr函式中的形參是字元指標,而字元指標並沒有改變,只是字元指標指向的記憶體空間的值發生改變。 因為你的引數傳遞的是指標,那麼這個引數就是實參 不是你所說的形參。 它改變的時 p1,而不是p1自己。p1和p1不是一個東西 你這個引數用的都是地址 指...
C 定義函式,有引數,實現對實參值的交換,用指標和引用2種方式實現
如下 void cmp int a,int b void cmp int a,int b 飲冰軒者 include main 這是引用,指標和這個差不多 include main 這是指標,求採納 void swap1 int a,int b 指標 void swap2 int a,int b 引用...