7. 數組和指針
- 7.1 我在一個源文件中定義了 char a[6], 在另一個中聲明了
extern char *a 。為什麼不行 ?
- 7.2 可是我聽說 char a[ ] 和 char *a 是一樣的。
- 7.3 那麼, 在 C 語言中 ``指針和數組等價" 到底是什麼意思 ?
- 7.4 那麼為什麼作為函數形參的數組和指針申明可以互換呢 ?
- 7.5 如果你不能給它賦值, 那麼數組如何能成為左值呢 ?
- 7.6 現實地講, 數組和指針地區別是什麼 ?
- 7.7 有人跟我講, 數組不過是常指針。
- 7.8 我遇到一些 ``搞笑" 的代碼, 包含 5["abcdef"]
這樣的 ``表達式"。 這為什麼是合法的 C 表達式呢 ?
- 7.9 既然數組引用會蛻化為指針, 如果 arr 是數組, 那麼 arr 和 &arr
又有什麼區別呢 ?
- 7.10 我如何聲明一個數組指針 ?
- 7.11 我如何在運行期設定數組的大小 ? 我怎樣才能避免固定大小的數組 ?
- 7.12 我如何聲明大小和傳入的數組一樣的局部數組 ?
- 7.13 我該如何動態分配多維數組 ?
- 7.14 有個靈巧的竅門: 如果我這樣寫
int realarray[10];
int *array = &realarray[-1];
我就可以把 ``array" 當作下標從 1 開始的數組。
- 7.15 當我向一個接受指針的指針的函數傳入二維數組的時候,
編譯器報錯了。
- 7.16 我怎樣編寫接受編譯時寬度未知的二維數組的函數 ?
- 7.17 我怎樣在函數參數傳遞時混用靜態和動態多維數組 ?
- 7.18 當數組是函數的參數時, 為什麼 sizeof 不能正確報告數組的大小 ?
翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)