關於C語言中陣列的定義

時間 2022-03-06 13:57:00

1樓:匿名使用者

如果在參數列中,int ,實際會被轉換成int *。不信你可以試試這個程式:

#include

void f(int b[10])

void main()

至於為什麼,就是為了防止傳遞陣列,c認為有乙個原始的,就操作它好了,如果你覺得要另立副本,就自己新分配記憶體,或者用自己auto分配的記憶體,將內容複製過來。當然c++的今天,你可以用引用或者物件複製,來強行真正去傳整個陣列。

不能說簡單型別傳值,陣列只傳首位址指標就不好,現在很多語言還都傳引用,但是真正需要副本時,要想辦法,否則可能出現功能問題。

2樓:匿名使用者

a是乙個指標

呼叫的時候arry也是傳遞指標的

c裡陣列可以用指標替代

3樓:匿名使用者

一樣的,陣列在做函式引數時,傳遞給函式的都是陣列的首指標,哪怕你的函式這樣寫:

void swp(int* p)

{}在呼叫的時候swp(array)也是可以的。只要傳遞給函式乙個陣列的首指標就行了,而你的array正好是陣列的首指標。

c語言中陣列定義的問題

主函式內定義的陣列在堆疊段中分配記憶體。全域性變數陣列在資料段中分配記憶體。一般資料段比堆疊段大很多,所以堆疊段分配不了的記憶體,資料段可以分配 1 在堆疊段中分配記憶體,由於太大無法分配,所以錯誤。2 在資料段中分配記憶體,資料段可以分配,無錯誤。3 陣列比 1 需要的記憶體少,在堆疊段大小範圍內...

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語言問題 c語言中二維陣列在記憶體中怎樣儲存?

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

c語言陣列元素的刪除,C語言中怎麼刪除陣列中的乙個元素?

對於陣列刪除,一般就是使用後面陣列元素前移的操作,來覆蓋前一元素,達到刪除的效果。例如陣列a 10 要刪除a 5 這個元素,那麼只需要把後面的元素前移一位就行了,也就是a 5 a 6 a 6 a 7 a 7 a 8 這樣子a 5 這個元素的內容就會被全部抹殺掉了。不過這裡存在乙個問題,你乙個結構體陣...

C語言陣列定義位址分配問題,c語言陣列在記憶體中是怎麼分配的?

使用c語言程式設計,實際上使用的記憶體只有一種 虛擬記憶體。根據功能的不同在c語言中又將虛擬記憶體為分三類 棧區 堆區 靜態資料區,無論單一變數還是陣列,其記憶體分配都是如此。其中,棧區 靜態資料區 堆區都會有編譯器負責分配 作業系統負責管理,程式設計師可以在堆區使用malloc 來動態分配堆記憶體...