辨析 陣列,指標

2021-06-20 23:08:33 字數 1174 閱讀 6124

多數的陣列引用都會退化為陣列第一元素的指標,就是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位系統下佔八個位元組的一種型別,指標指向的內容可以是常量,變數,函式,結構體,指標本身,陣列,等等.一級指標 一級指標常常在函式傳參時使用,可傳的引數有一維陣列,常量指標,函式指標等等都可以 但我們要注意不要在函式中,通過改變形參的指向來達到改變實參指向的效果,...