考慮代碼:傳遞給函數而不是常量指針的數組參數?
void foo(char a[]){
a++; // works fine, gets compiled
//...
}
現在,考慮一下:
void foo(){
char a[50];
a++; // Compiler error
//...
}
我聽到一個陣列相當於一個常量指針,不能增加,因爲它不是一個左值...
那麼爲什麼第一個代碼被編譯,是這樣,因爲函數的數組參數作爲指針傳遞,即T []轉換爲T *傳遞..因此,foo(a)傳遞一個作爲指針。
但是,它不迴轉換爲T []再次因爲被聲明爲:
void foo(char a[]);
閱讀[comp.lang.c常見問題](http://c-faq.com)的第6部分。 – 2012-04-01 09:54:03