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 專案的開發 而身...