測試環境:
win10 x86-64
gcc: x86_64-pc-cygwin
1. 說明
1)作為函式形參時(也只有這種情況),陣列與指標等同,int *p = int a,p和a在函式內部都是指標
2)陣列作為函式形參時將被轉化為指向陣列第乙個元素的指標,無論是int a[10]還是int a形式的形參,在函式內部都是int *a形式指標
3)沒有辦法直接將陣列本身傳遞給函式(可以間接傳遞,如將陣列封裝再結構體內~~~)
3)由於規則2),下列用法均正確,it's amazing!
fun(&i);
fun(p);
fun(a);
2. **:
#include #include void fun(int a[10])
void fun2(int a)
void fun3(int *a)
int main()
; p = &i;
fun(&i);
fun(p);
fun(a);
fun2(&i);
fun2(p);
fun2(a);
fun3(&i);
fun3(p);
fun3(a);
return 0;
}
3. 編譯
無warning無error
4. 執行
d:\baoli\desktop
λ .\a.exe
fun: a[0] = 1
fun: a[0] = 1
fun: a[0] = 5
fun2: a[0] = 1
fun2: a[0] = 1
fun2: a[0] = 5
fun2: a[0] = 1
fun2: a[0] = 1
fun2: a[0] = 5
C語言 指標陣列和指標陣列 函式指標和指標函式
在c語言中最令然頭疼的莫過於指標 特別是指標和陣列符號一起出現的 傻傻搞不清楚的原因主要在於運算子的優先順序沒有搞清 指標的運算子 陣列運算子,函式運算子 陣列元算符 運算優先順序和函式運算子 或者說強制改變運算順序符號 都是位於第一優先順序的 而我們的指標運算子則是第二優先順序 所以當出現 int...
C語言高階剖析 32 陣列指標和指標陣列
例如 int array 5 的型別為 int 5 我們經常會碰見這樣的情景 問 這裡定義的陣列是什麼型別的?答 int 型。這樣的回答就是概念不清晰了,陣列的型別包括元素型別和陣列大小,回答 int 型只回答了元素型別,正確的答案是 int 5 c 語言通過 typedef 為陣列型別重新命名,如...
C語言 指標陣列和指標陣列
本質是陣列 只不過呢,它裡面存放的資料型別不是int,也不是char這類基本型別,而是乙個指標型別,說白了就是位址,所以叫指標陣列!記住 是存放指標的陣列!int p n 本質是指標 只不過是指向乙個陣列的指標,也稱之為 行指標 int p n p是乙個指標,指向乙個int型別的一位陣列,這個一位陣...