c 中的按值傳遞和地址傳遞的區別?細緻點兒的

2022-03-04 21:14:22 字數 1715 閱讀 8330

1樓:克拉默與矩陣

值傳遞:

形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的(實參->形參),引數的值只能傳入,

不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。

指標(地址)傳遞:

形參為指向實參地址的指標,當對形參的指向操作時,就相當於對實參本身進行的操作

2樓:匿名使用者

按值傳遞其實就是把變數複製了一遍,因為是複製品,所以他不會改變樣品的值

比如有一個函式 fun( int x);然後去呼叫int a=8;

fun(a);當執行到這裡的時候 就建立了一個變數 x然後 a 的的值就複製給 x 了

因為他們存放的地址不一樣,所以函式裡面 x 變化了a 的值是不會變的

不知道你能不能理解

3樓:匿名使用者

按值傳遞更容易理解嘛.

引數為非指標型別,呼叫的時候不用地址傳遞,子程式中更改的是區域性,而不是呼叫時的引數.

若要細細講的話,按地址傳遞都還有需要說的.

請理解下"指標"與"指標所指向的物件"的差別.

"指標"又有地址麼?等

c++中陣列作為引數,有按值傳遞和按地址傳遞這兩種方式麼?

4樓:風若遠去何人留

都是傳地址.

不過地址也是有區別的.

傳陣列名本身, 屬於按值傳遞,即使它是第一個地址值.

傳遞陣列地址,或者傳遞陣列引用, 屬於傳地址.

但實際上,由於陣列名不許修改值,傳地址並沒有什麼意義.

c++關於函式的傳值和傳地址傳引用的區別?

5樓:home我是吸血鬼

#include

void plus(int p, int *q)

main()

6樓:captain璇

傳值可以說是暫時分配一個新的空間,不會改變原來的值,傳引用相當於把變數的地址傳過去,會改變原始的值

7樓:匿名使用者

你好,函式傳值,只是起到一個「傳」的作用,在呼叫函式中修改,只會在呼叫函式的這個作用域中起作用。

函式傳地址,一般通過傳指標或傳引用。它在呼叫函式的時候,如果改變了傳入地址中的資料,即地址所指向的地址空間。

而通過傳值,相當於在記憶體中拷貝了一份,在呼叫函式中,只改變了拷貝值所在的地址空間的資料,而不是改變所傳入值的地址空間的資料

a1和a2都是執行了,只是a2執行的並沒有改變傳入的值!

如果需要還不懂,可以再來問我!

c++中指標的地址和地址值在記憶體中如何分配,相互之間又有什麼區別和聯絡呢?請求詳細講解,謝謝!

8樓:

c++中,指標中存放的是地址,地址指向的是記憶體中的某一塊區域,那裡存放著某一個值或者那塊記憶體存放著某一組地址連續的資料,比如陣列.

c++的指標中存放的是地址,,這說明指標本身也是佔用了記憶體的,,如果沒有佔用記憶體,那這個地址存放在哪?所以你定義一個指標這個指標是佔用了記憶體的

而地址值指的就是這個指標指向的那塊記憶體區域中存放的東西,,比如現在有一個整形變數叫做a,,裡面存放著數字1,,那麼此時我們用一個整形指標指向這個變數a的地址,,此時你說的指標值就是這個變數a的值,也就是數字1

以前資訊傳遞的方式和現代傳遞的方式有什麼不同

最大的變化在於速度吧,以前的通訊速度是基本和交通速度相同,例如八百里加急。雖然有類似飛鴿傳書和烽火等較快的方法,卻受限於安全性,資訊量以及可靠程度等問題。但是自從無線電被應用之後,資訊就開始以光速傳遞了,資訊量和可靠性也大幅提高。古代 資訊傳遞的方式很少且慢,古代傳遞資訊的方式如烽火 書信 一般是找...

JSPa href中傳遞中文的問題

有兩種方法 一,改為英文名 二,對 的路徑名進行處理,假設 路徑名為string imgroot new string imgroot.getbytes iso 8859 1 gb2312 把 名改為英文名.求助 jsp中用href傳遞中文引數亂碼 不能再js中用encodeuri轉碼 如果是str...

現代資訊傳遞方式的好處和壞處現代傳遞資訊的方式的優缺點?

上網的五大好處 一是開闊視野,及時瞭解時事新聞,獲取各種最新的知識和資訊 二是可以毫無顧忌地與聊天,傾吐心事,減輕課業負擔,緩解壓力 三是可以在各個bbs裡張貼自己對各種問題的看法和見解,覺得很有成就感 四是可以提高自己某項業餘愛好的水平 五是自己動手做主頁已成為時尚,把自己喜愛的 資料傳上去,開一...