整理自《c陷阱與缺陷》。
陣列注意點:
1.c陣列中只有一維陣列,陣列的大小必須在編譯期作為常數確定。但c陣列的元素可以是任何型別的物件,當然也可以是另乙個陣列,所以「**」出乙個多維陣列。(不太明白為什麼要強調只有一維陣列,難道「模擬」出來的多維陣列和真正的多維陣列不一樣?)
2.對於乙個陣列,我們只能夠做兩件事:確定該陣列大小[sizeof(陣列名)],以及獲得指向該陣列下標為0的元素的指標
陣列名:
指向該陣列下標為0的元素的指標。
陣列下標:
任何乙個陣列下標運算都等同於乙個對應的指標運算。
即a[i]=*(a+i)=*(i+a)=i[a] (後種寫法絕不推薦)
例:
#include void main()
; *a=66;
printf("a[0]: %d \n",a[0]);
printf("0[a]: %d \n",0[a]);
return;
}
結果為:
a[0]: 66
0[a]: 66
寫法很有趣。
c語言中陣列名和陣列名取位址理解
1 陣列名是個指標型常量,也就是值不能被改變。指標常量和常量指標區別見本文 char str hello char ch 6 hello ch str 錯誤,常量不能被賦值,正如 1 2,字面值常量1被賦值為2一樣錯誤。char ch 2 定義後,陣列名相當於char const ch 0x.ch就...
c語言 陣列名和 陣列名的區別
在學習c語言的過程中我們可以發現乙個一維陣列的的陣列名往往具有兩層含義 一.作為陣列名代表整個陣列 二.作為指標代表陣列的首元素位址 因此很容易把陣列和指標混為一談 我們可以發現陣列名等價於乙個指向陣列首位址的指標。當陣列名代表整個陣列的時候是在以下兩種情況 1.在用sizeof關鍵字求陣列所佔的記...
C語言中陣列名與 陣列名的區別
include int main void int ptr int a 1 a代表整個陣列的位址,1應該加上sizeof a 的長度,所以ptr指向a 5 位置處。printf d d n a 1 ptr 1 a代表陣列首元素的位址,1應該加上sizeof a 0 所以a 1指向a 1 處。retu...