關於C語言函式與陣列的問題

時間 2022-04-17 10:42:50

1樓:匿名_熱心網友

#include "stdio.h"

void swap(int a,int b,int n)}

2樓:鷹弈

c語言函式間引數的傳遞全部是值傳遞,分傳值和傳址兩種

你問的問題跟傳址有關,所謂傳址就是將一塊記憶體的首位址值在函式間進行傳遞,實際上也是傳值,只不過這個值不是你所賦予的值,而是位址值

比如我們定義一維陣列,進行傳址,形參可以是一級指標,或一維陣列,也就是說一級指標和一維陣列是等價關係,這是為什麼?

(實際上這裡牽扯乙個退化問題,這是由編譯過程決定的)實參如果是位址值,也就是傳址,那麼形參必定是乙個指標,因為只有指標才能操作位址值,如果函式間進行傳址,形參依然是一維陣列,二維陣列,指標陣列,在編譯過程中他們也會退化成相應的指標!

在強調一邊,c語言中只有指標才能操作位址,就算你將位址儲存在普通變數中,最終操作他的還是指標!

以下是函式間傳址舉例

如果實參是乙個變數的首位址,那麼形參只能是乙個一級指標

如果實參是一維陣列的首位址,那麼形參可以是一級指標或一維陣列

如果實參是二維陣列的首位址,那麼形參可以是乙個行指標(陣列指標)或二維陣列

如果實參是指標陣列的首位址,那麼形參可以是乙個二級指標或指標陣列

四種最常見傳址,你自己試吧

如果還是函式間還是傳遞不過去,那就不是這個問題了,而是你最基本最基本的東西都沒搞清楚。。。那就只有看書了

3樓:匿名使用者

定義函式時把形參定義成指標型別就可以了唄,實參傳入就用陣列名,例如a[5],就把a作為實參。我這用手機不好打字啊

關於c語言陣列和指標的問題,關於C語言陣列和指標的乙個問題

c 語言裡 1 形式邏輯不成立。2 要分清 乙個形式 出現在 宣告裡,還是 出現在語句裡,3 另外,字元變數 與 普通變數 有些 不同。下面只談字元 宣告 char s 10 hello s 是 陣列,初始化 hello 0 自動加 0 宣告 char p p 是 指標。宣告 char p s p ...

關於c語言函式問題,關於C語言函式問題

一般判定都是為真執行,為假不執行 圖中的 p指的是 以p變數的內容為位址的變數 而你只要看看,它所指向的變數的值是不是0,如果不是0,那麼就會執行 這個地方其實不用換成for,該用什麼用什麼,如果是題目需要的話就只能這樣寫了 for p p 10 然後在裡面寫一堆語句.不過我是沒這樣寫過,不太清楚....

C語言中指標陣列的問題,c語言關於指標陣列的問題?

這樣看 0x00 0x78,0x99 0x78 h e l l 0 0 0x99 w o r l d 0 其中s就是0x00,然後,s 0 就是 0x00 0 0x00 取內容,得到的值是0x78,然後列印的就是hello s,就是相當於s 0 s 1,因為優先順序關係,先執行s 0 就是 0x78...

c語言陣列的問題,乙個c語言陣列的問題

你按照for int i 0 i 這個執行一下,應該會達到你想要的效果,至於你那個有幾個問題第乙個就是輸出你設定有兩個,但是你就給了乙個的。第二個就是你預計的結果之中是不應該出現code 5 這個值的,因為code最多到code 4 修改如下,你再試試 for int i 0 i 5 i 陣列下標是...

c語言中的二維陣列問題,c語言問題 c語言中二維陣列在記憶體中怎樣儲存?

目的是將緩衝區中輸入流中資料清除,可以使用 fflush stdin 清除資料 gets函式會把前面在scanf函式的輸入結束符即回車當做第乙個字串資料的結束符接收,因此不加gets s 就會導致資料個數少乙個。當然使用gets s 會提前接收了回車,因此也是起到同樣的作用。你程式函式中有個錯誤,p...