多數的陣列引用都會退化為陣列第一元素的指標,就是c語言中陣列和指標「等價」的基礎。
在c語言中只是指標算術和陣列下標運算等價,指標和陣列是不同的。
因此,陣列在c語言中是個「二等公民」。
事實上,下表表示式 a[i] 就是按照等價的指標表示式 *((a)+(i)) 定義的。
1,函式形參的陣列和指標宣告可以互換。
例如:void f(char a) {} 與 void f(char *a) {}
這是一種便利的做法,由於陣列會馬上退化為指標,陣列事實上從來沒有被傳入函式。
允許指標引數宣告為陣列只不過是為了讓它看起來好像傳入了陣列。
2,陣列不能被賦值。
例如:char carr [10];
carr = "abc"; //error
3,陣列和下標在c語言中可以互換。
在c語言中的字串就是char型陣列,所以表示式「abc」[2]是合法的,值就是字元『c』。
int main(int argc, char* agrv)
(環境win7 32位 vc6.0)輸出:"abc"[2]=c
4,陣列和指標
(1)陣列和指標的區別
區別在於型別。
在標準c中,&array生成乙個「t型陣列」的指標,指向整個陣列
。
在所有的c編譯器中,對陣列的簡單引用(不包括&操作符)生成乙個"t型"的指標,指向陣列的第乙個元素。
例如: int a[10];
對於a的引用的型別是「int型的指標」,而&a是「10個int的陣列的指標」。
(2) int (*ap)[3],ap為陣列指標,在使用下標或增量操作符的時候,會跳過整個陣列。
5,陣列的大小
sizeof操作符如果能夠判斷出陣列的大小,它就會返回陣列的大小。如果陣列的大小未知或者陣列已經退化為指標,
則它不能提供陣列的大小。
例如:
void f(char arr)
int main(int argc, char* agrv)
C語言指標陣列和陣列指標辨析
定義 int p n 優先順序高,先與p結合成為乙個陣列,再由int 說明這是乙個整型指標陣列,它有n個指標型別的陣列元素。int a 1,b 2,c 3 int p 3 定義擁有3個元素的指標陣列並賦初值為 a,b,c 位址 printf p p p n a,b,c printf p p p n ...
辨析陣列名和指標
陣列是變數,變數名代表整個變數,主要體現在取位址 1跨越的是整個變數的大小。指標變數進行運算 int p 10 陣列指標 int p 10 指標陣列 int p 10 函式指標陣列 int p 函式指標 int p 10 指向函式指標陣列的指標思考這類問題,要對運算子的優先順序和結合方向有清楚的把握...
陣列,指標,指標陣列,陣列指標
指標是在32位系統下佔四個位元組,64位系統下佔八個位元組的一種型別,指標指向的內容可以是常量,變數,函式,結構體,指標本身,陣列,等等.一級指標 一級指標常常在函式傳參時使用,可傳的引數有一維陣列,常量指標,函式指標等等都可以 但我們要注意不要在函式中,通過改變形參的指向來達到改變實參指向的效果,...