1樓:計潤
形參和實參的區別
形參出現在函式定義中,在整個函式體內都可以使用, 離開該函式則不能使用。
實參出現在主調函式中,進入被調函式後,實參變數也不能使用。
形參和實參的功能是作資料傳送。發生函式呼叫時, 主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的資料傳送。
1.形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時, 即刻釋放所分配的記憶體單元。因此,形參只有在函式內部有效。 函式呼叫結束返回主調函式後則不能再使用該形參變數。
2.實參可以是常量、變數、表示式、函式等, 無論實參是何種型別的量,在進行函式呼叫時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應預先用賦值,輸入等辦法使實參獲得確定值。
3.實參和形參在數量上,型別上,順序上應嚴格一致, 否則會發生「型別不匹配」的錯誤。
4.函式呼叫中發生的資料傳送是單向的。 即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函式呼叫過程中,形參的值發生改變,而實參中的值不會變化。
5.當形參和實參不是指標型別時,在該函式執行時,形參和實參是不同的變數,他們在記憶體中位於不同的位置,形參將實參的內容複製乙份,在該函式執行結束的時候形參被釋放,而實參內容不會改變。
2樓:匿名使用者
c語言中,在函式內部根本就不能直接改變實參值,通過指標只是間接對位址下的內容進行修改。
指標引數就一定能改變實參的值麼
3樓:金色潛鳥
「指標引數就一定能改變實參的值麼?」,回答是 「不一定」。
(1)如果指標引數 在函式裡,只做右值,不做左值,那麼 實參的值不會改變。
(2)如果指標引數 在函式裡,做過左值,而賦給的新值數值等於老值,那麼實參的值不會改變。
(3)如果指標引數 在函式裡,做過左值,而賦給的新值數值不等於老值,那麼實參的值就改變了。
(4)要把函式裡更新的數值,帶回 呼叫出,就需要用 指標引數。(是必要條件,不是充分條件。)
為什麼c語言不能通過執行呼叫函式來改變實參指標變數的值
4樓:小雨田大
呼叫函式,只能改變指標指向的記憶體空間的內容,不能改變實參指標變數的值。專
我覺得題
屬主對指標變數,還算有一點了解。
指標變數,其實也就是乙個變數,但它的值是一塊記憶體的位址。
函式呼叫時,你只是把實參指標變數的值,即一塊記憶體的位址,賦(複製)給了形參,然後,你在函式內把形參指標指向別的記憶體空間位址,與實參指標就無關了,實參指標還是指向原來的那塊記憶體空間。
另外,你把實參指標變數的值,賦(複製)給了形參,然後形參指標就能操縱這塊記憶體了,可以改變這塊記憶體的容。此時,實參指標指向的那塊記憶體的內容也就改變了,但實參指標的值還是函式呼叫前的那塊記憶體空間的位址。
5樓:匿名使用者
是可以的啊?你**有問題吧,發來看看
c語言中,形參指標變數的值改變不能使實參指標變數的位址發生改變,而可以改變它的值。請問這句話對麼?
6樓:匿名使用者
這個總共有兩個問題:
第乙個是「實參指標變數的位址」應該改為「實參指標變數的值」。實參指標變數的值是指該指標指向的變數的位址,而實參指標變數的位址則是該指標變數的位址,屬於二維指標了。
第二個是個語文問題:後面的「可以改變它的值」,這個它具體是指形參指標變數還是指實參指標變數呢?又或者是指實參指標指向的變數呢?
所以正確的說法是:
c語言中,形參指標變數的值改變不能使實參指標變數的值發生改變,而可以改變形參指標變數的值,也可以改變實參指標指向的變數的值。
o(∩_∩)o~
7樓:
正確,上**:
void fun(int* p)
int main(void)
執行一下,一目了然!
8樓:
正確。實參傳給型參的只是乙個位址,你可以改變位址裡的值。
9樓:周生
1.正確
2.使用二級指標,即傳指標的位址
C語言中的空指標,C語言中的空指標是什麼意思?
int p 47 這個用法是不正確的 這個語句等於下邊的 int p p 47 你直接將指標p的值賦值為47是很危險的 應為如果記憶體中位址為47的地方剛好是某個系統程式或關鍵模組佔據的話你進行下面 p 20 的賦值行為 有可能導致系統直接崩潰哦 是的,不過這很危險。而且cpu的32位保護機制也未必...
C語言中指標佔用多少位元組,C語言中乙個指標佔用多少位元組
指標即為位址,指標幾個位元組跟語言無關,而是跟系統的定址能力有關,譬如以前是16為位址,指標即為2個位元組,現在一般是32位系統,所以是4個位元組,以後64位,則就為8個位元組。借lz的問題,請教大家乙個問題吧 指標佔用的位元組數和指標的型別有關係嗎?謝謝哦 c語言中,指標變數為何只佔4位元組?首先...
c語言指標問題,求解答,C語言中的指標問題,求解答
1,是取值運算子,因為你要判斷tt的值的情況,所以要用 2,tt 相當於 tt tt 1 這個是指標向後移動,不需要取值,謝謝,望採納 你的tt是指標吧。tt指向的是 位址 比如位址值為 10ff 1000 tt是取這個位址中儲存的資料,而tt 意思把tt指向的位址值 1,即tt現在指向了 10ff...