陣列名一般可以當指標來用,但是有兩種情況例外。
int arr[5]=;
printf("%d\n",*arr); ----->列印出1
void func(int *a){}
func(arr); ------->作為int *的指標用
void func1(int a,int size){}
func(arr,5); ------->將這個陣列做函式實參時,其實就是陣列名做int *的指標,加上個元素個數。
兩個例外:
sizeof(arr) 這時不是計算int *的大小,而是整個陣列的大小。
&arr 對陣列名取位址得到的指標的步長是整個陣列的大小,而不是int*的大小。
sizeof 陣列名 及strlen(陣列名)
程式的輸出結果為 1 100 2 4 3 1 相當於a 100 這個數所佔的位元組大小,也就是乙個char位元組占得大小 當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標。不論陣列a的容量是多少,sizeof a 始終等於sizeof char func char p int main ...
陣列名和陣列名取位址
在c中,在幾乎所有使用陣列的表示式中,陣列名的值是個指標常量 也就是陣列第乙個元素的位址。它的型別取決於陣列元素的型別 如果它們是int型別,那麼陣列名的型別就是 指向int的常量指標 在以下兩種場合下,陣列名並不是用指標常量來表示,就是當陣列名作為sizeof操作符和單目操作符 的運算元時。siz...
陣列名和陣列名取位址
1 int a 10 2 int p a 3 int q 10 a 第二個為指向陣列的指標.a只是a 0 的位址,a 1就是a 1 的位址了,a是整個a 10 的首位址,是以整個陣列為角度來看,雖然它與a 0 的值相同,但是 a 1就已經增加了10個int型別的位元組的長度了.1 include 2...