那麼為什麼作為函式形參的陣列和指標申明可以互換呢?
這是一種便利。
由於陣列會馬上蛻變為指標, 陣列事實上從來沒有傳入過函式。允許指標引數宣告為陣列只不過是為讓它看起來好像傳入了陣列, 因為該引數可能在函式內當作陣列使用。特別地, 任何宣告「看起來象」 陣列的引數, 例如
void f(char a)
在編譯器裡都被當作指標來處理, 因為在傳入陣列的時候,那正是函式接收到的.
void f(char *a)
這種轉換僅限於函式形參的宣告, 別的地方並不適用。如果這種轉換令你困惑, 請避免它; 很多程式設計師得出結論, 讓形參宣告「看上去象」 呼叫或函式內的用法所帶來的困惑遠遠大於它所提供的方便。
C 陣列作為形參傳遞給函式
以下三種形式等價 void function const int arg void function const int arg void function const int arg 10 這裡維度表示期望有10個,並不代表真實為10個以上三個函式等價於將陣列的頭指標const int 型別傳遞給...
C語言高階程式設計 陣列和指標作為函式形參
測試環境 win10 x86 64 gcc x86 64 pc cygwin 1.說明 1 作為函式形參時 也只有這種情況 陣列與指標等同,int p int a,p和a在函式內部都是指標 2 陣列作為函式形參時將被轉化為指向陣列第乙個元素的指標,無論是int a 10 還是int a形式的形參,在...
在函式中以陣列作為形參的方法
本文介紹了三種在函式中以陣列作為形參時的處理方法,重點介紹c 11標準是如何管理陣列大小的。陣列的兩個特殊性質對我們定義和使用作用在陣列上的函式有影響,這兩個性質分別是 不允許拷貝陣列以及使用陣列時通常會將其轉換成指標。因為不能拷貝陣列,所以我們無法以值傳遞的方式使用陣列引數。因為陣列會被轉換成指標...