向學長提個c語言問題(關於指標和函式)

時間 2021-05-07 20:00:40

1樓:g洋蔥頭

呵呵.其實你的理解很正確的.不過

"函式形參是一個區域性變數,只在函式內部有用,函式一旦退出,形參就被釋放了"

這句話只針對變數是正確的.對指標就不正確了..

指標你可以直接當做一個地址來看..

int *fun(int n)

這個函式xp=&n得到的是n這個變數的地址地址一直都是存在的.你用完這個函式後如果不儲存這個地址的話型參就好象被釋放了.因為你不知道他的地址是多少無法用他了.

但是你這裡直接把他的地址給返回了,也就是儲存到了一個外部變數中.你一直都知道他的地址是多少,所以你可以一直引用他

補充:看來摟主沒有好好看我發的.那其實準確的不應該叫做釋放.

應該叫做忘記了地址.如果你沒有返回地址那麼你就忘記了地址就相當於釋放了變數.因為你無法再用它.

但是它還是確切存在於記憶體中.知道被其他資料覆蓋.如果你返回了地址那麼你就能夠把地址儲存下來以後繼續使用

2樓:匿名使用者

請注意兩個被呼叫函式的返回值型別是不同的

第一個返回的是指向int型的指標而

第二個返回的是指向結構體的指標

當函式處於被呼叫階段是形參將轉變為實參 相當於將實際值賦予形式引數,當呼叫結束後形式引數將清空(釋放),但是這與你返回的值沒有關係,形參無非是在計算過程中的一個容器而已。

3樓:匿名使用者

形參是釋放 不信你在主函式中輸出形參的值 它會提示你缺少定義形參的量 說明已經釋放了,但在主函式中 你也定義了指標 既然定義了也為他開闢單元 就是指標指向的單元 比如int *p;int n;p=&n 就包含*p=n,呼叫時雖然n釋放了 但*p沒有釋放 所以也會顯現結果 負責呼叫時n的值怎麼傳遞

4樓:匿名使用者

上面兩個xp指標因為是local variable,所以當呼叫這個變數的函式結束之後,這個指標應該就被釋放了,不存在值了。

關於c語言函式型別定義問題,關於C語言函式型別定義問題

超級福醬 這個語句主要是用的c語言的等號算符 c語言裡面等號可以看做一個函式,它的返回值是右值。比如int i,j,x i j 5 這條語句除了賦值以外還有返回值,返回值是5所以可以這麼寫 x i j 5 這裡x就等於5了。所以 語句 if x 0 就可以簡寫為 if i j 5 0 另外,c裡面字...

有些關於C語言的問題,C語言報錯的問題?

1 以下選項中屬於c語言的資料型別是 a.複合型 b.雙精度型 c.邏輯型 d.集合型 b正確2 以下說法中正確的是 a.c語言程式總是從第一個的函式開始執行 b.在c語言程式中,要呼叫的函式必須在main 函式中定義 c.c語言程式總是從main 函式開始執行 d.c語言程式中的main 函式必須...

關於c語言字型顏色問題,C語言顏色問題,非常急!!!

文庫精選 內容來自使用者 jiangluyz linux下游標定位和清屏函式printf 033 47 31mhello world 033 5m 47是字背景顏色,31是字型的顏色,hello world是字串.後面的 033 5m是控制碼.顏色 quote 字背景顏色範圍 40 49 字顏色 3...