什麼時候陣列和指標是相同的:

規則1:表示式中的陣列名(與申明不同)被編譯器當作指向該陣列第一個元素的指標

規則2:下標總是與指標的偏移量相同

規則3:在函式引數的宣告中,陣列名被編譯器當作指向該陣列第一個元素的指標

規則1的例外情況:

1、陣列作為sizeof的運算元,此時是整個陣列的大小,而不是指標所指向的第一個元素的大小

2、使用&操作符取陣列的地址

3、陣列是一個字串常量初始值

指標和陣列可交換性的總結:

1、用a[i]這樣的形式對陣列進行訪問總是被編譯器“改寫”或解釋為像*(a+i)這樣的指標訪問

2、在特定的上下文環境中,也就是它作為函式的引數(也只有這種情況),一個數組的宣告可以看作是一個指標。作為函式引數的陣列(就是在一個函式中呼叫)始終會被編譯器修改成為指向陣列第一個元素的指標。

3、指標始終就是指標。它絕不可以改寫成陣列。你可以用下標形式訪問指標,一般都是指標作為函式引數時,而且你知道實際傳遞給函式的是一個數組

4、因此,當把一個數組定義為函式的引數時,可以選擇把它定義為陣列,也可以定義指標。不管選用哪種方法,在函式內部事實上獲得的都是一個指標。

5、在其他所有情況中,定義和宣告必須匹配。如果定義了一個數組,在其他檔案對它進行申明時也必須把它宣告為陣列,指標也是如此