關於陣列名

2022-06-06 10:21:09 字數 379 閱讀 6079

陣列名一般可以當指標來用,但是有兩種情況例外。

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...