c語言中的陣列名代表的意義
阿新 • • 發佈:2019-01-05
陣列名是陣列的首地址,就是陣列中的第一個元素的地址,是常量。常量是不能值在=的左邊的。陣列和指標的區別在於,指標是變數,是用來儲存指向資料的地址的變數,而陣列名是常量。一般情況下申明一個數組,比如char a[10]; 之後 陣列名a都是陣列的首地址,是一個地址常量。但是在函式申明的形參列表中除外,比如:
int fo(char []);
在這種情況下的申明與
int fo(char a[]);
int fo(char *a);
是等價的,就是說在這種情況下,就算你寫的是陣列的形式,編譯器實際處理的時候也是當做指標來處理的,(此時,指標是變數,形參也是變數,二者剛好對應。)所以在函式fo內部,我們隊a ++ -- += -= = 之類的帶賦值的操作是完全合法的,因此a就是一個指標,不是陣列名,當我們向fo裡面傳入我們一個已經事先申明的陣列的首地址,指標a裡面的值就是已經申明的陣列進行操作,正是因為c有這個傳遞著的優點,所以省略了很多不必要的拷貝工作,試想如果沒有這個傳地址,我們傳遞一個幾萬個元素的陣列進去,拷貝工作是相當可觀的,這樣我們明白了 int main (int argc,char **argv