C C 陣列名與指標區別深入探索

2021-06-21 13:48:00 字數 1035 閱讀 1026

c語言中 陣列與指標 有時確實很難區分,有太多相似,但也有不同,致命的不同。

一 先說說相同點。

1陣列可以當指標訪問,即陣列名可以看成指標(暫時這麼說)

例如 char a[10] = "i love you";

*a = 'a';

printf("%s\n",a);

printf("%c\n",*a);

列印結果 a love you a

可以看出陣列可以當指標來訪問該陣列。

二陣列與指標的不同點

1先看個例子

char *b;

char a[10] = "i love you";

printf("%d\n",sizeof(a));

printf("%d\n",sizeof(b));

輸出結果 10 4

可以看出陣列名不是指標,至少不單單是指標, 因為它和指標大小不一樣。 2

其實陣列有以下特點(摘自別人的文章)

(1)陣列名的內涵在於其指代實體是一種資料結構,這種資料結構就是陣列;

(2)陣列名的外延在於其可以轉換為指向其指代實體的指標,而且是乙個指標常量;

(3)指向陣列的指標則是另外一種變數型別(在win32平台下,長度為     4),僅僅意味著陣列的存放位址!

陣列名指代一種資料結構:陣列,所以其長度為10;

陣列可以作為指標常量(即不能再指向別處的指標);

如以下程式

int a[10];

a++;

編譯器會報錯。

三 總結類陣列和指標的區別和相同點。然後還有乙個特殊情況;

如下例

void mysizeof(char a)

int main()

輸出結果為4;

又成類指標, 當陣列名當引數傳入函式時,陣列名就失去類作為陣列的特權,徹底淪為指標;

注意:sizeof()   並不是函式,而是乙個操作符,因為其可以這樣用

sizeof(int)   沒有任何函式可以接納乙個資料型別作形參。

C C 陣列名與指標區別深入探索

引言 指標是c c 語言的特色,而陣列名與指標有太多的相似,甚至很多時候,陣列名可以作為指標使用。於是乎,很多程式設計者就被搞糊塗了。而許多的大學老師,他們在c語言的教學過程中也錯誤得給學生講解 陣列名就是指標 很幸運,我的大學老師就是其中之一。時至今日,我日復一日地進行著c c 專案的開發,而身邊...

C C 陣列名與指標區別深入探索

引言 指標是c c 語言的特色,而陣列名與指標有太多的相似,甚至很多時候,陣列名可以作為指標使用。於是乎,很多程式設計 者就被搞糊塗了。而許多的大學老師,他們在c語言的教學過程中也錯誤得給學生講解 陣列名就是指標 很幸運,我的大學老師就是其中之一。時至今日,我日復一日地進行著c c 專案的開發 而身...

C C 陣列名與指標區別深入探索

引言 指標是c c 語言的特色,而陣列名與指標有太多的相似,甚至很多時候,陣列名可以作為指標使用。於是乎,很多程式設計 者就被搞糊塗了。而許多的大學老師,他們在c語言的教學過程中也錯誤得給學生講解 陣列名就是指標 很幸運,我的大學老師就是其中之一。時至今日,我日復一日地進行著c c 專案的開發 而身...