陣列 陣列名 陣列位址

2021-08-11 11:33:07 字數 3079 閱讀 3702

這裡取出的是整個陣列的位址。計算的是整個陣列的大小,單位是位元組。

除此之外,遇到的所有的陣列名都表示陣列首元素的位址!
//一維陣列

int a = ;

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

這裡的陣列名a表示整個陣列,計算整個陣列的大小,也就是4個整數,整型佔4個位元組,所以整個陣列的大小是4*4=16個位元組。

printf("%d\n",sizeof(a+0));//4
這裡的位址表示陣列首元素的位址,也就是1的位址,a+0還是陣列首元素的位址,位址就是4個位元組。

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

4*a==*(a+0)==a[0]

這裡的a表示陣列首元素的位址,解引用就是陣列首元素,而陣列首元素的位元組數就是4。

printf("%d\n",sizeof(a+1));//4
這裡的a是陣列首元素的位址,a+1表示第二個元素的位址,位址4個位元組。

printf("%d\n",sizeof(a[1]));//4
a[1]表示陣列第二個元素,位元組數是4。

printf("%d\n",sizeof(&a));  //4
這裡的a表示整個陣列,取整個陣列的位址,位址還是4個位元組。

printf("%d\n",sizeof(*&a)); //16
&a表示取整個陣列的位址,解引用為整個陣列,整個陣列的大小為16個位元組。

printf("%d\n",sizeof(&a+1));//4
這裡的a表示整個陣列,&a表示取整個陣列的位址,整個陣列的位址+1,還是位址,位元組數為4。

printf("%d\n",sizeof(&a[0]));//4
首元素的位址,4位元組。

printf("%d\n",sizeof(&a[0]+1));//4
首元素位址+1,第二個元素的位址,4位元組。

//字元陣列

char arr = ;

printf("%d\n", strlen(arr));//隨機值

這裡的陣列名arr表示陣列首元素的位址,從首元素位址開始數,直到遇到『』\0『』結束,但是本陣列中沒有『』\0『』,所以就一直往後數,直到遇到『』\0『』為止,所以是隨機值。

printf("%d\n", strlen(arr+0));//隨機值
陣列首元素的位址+0,還是陣列首元素的位址,同上,隨機值。

printf("%d\n", strlen(*arr));//error
陣列首元素的位址解引用為陣列首元素,而strlen( )括號裡放的應該是位址,不是元素,所以**本身錯誤。

printf("%d\n", strlen(arr[1]));//error
陣列的第二個元素,不是位址,錯誤。

printf("%d\n", strlen(&arr));//隨機值
取整個陣列的位址,往後數,遇到『』\0 『』為止,故為隨機值。

printf("%d\n", strlen(&arr+1));//隨機值
printf("%d\n", strlen(&arr[0]+1));//隨機值

有錯誤的兩個已遮蔽,其他都為隨機值!

int a[3][4] = ;

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

計算整個陣列的大小,共3*4=12個元素,每個元素4位元組,共4*12=48位元組。

printf("%d\n",sizeof(a[0][0]));//4
陣列首元素,4個位元組。

printf("%d\n",sizeof(a[0]));//16
這裡的a[0]表示第一行的陣列名,所以這裡表示計算第一行陣列的大小,為4*4=16位元組。

printf("%d\n",sizeof(a[0]+1));//4
這裡的a[0]是陣列名,但是沒有單獨放在sizeof裡,所以表示陣列首元素的位址,+1則是第二個元素的位址,故為4位元組。

printf("%d\n",sizeof(a+1));//4
a是二維陣列的陣列名,這裡表示二維陣列的首元素位址,+

1表示二維陣列的第二個元素的位址,還是4位元組。

printf("%d\n",sizeof(&a[0]+1));//4
二維陣列第一行的位址+1,第二行的位址,4位元組。

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

16

a表示二維陣列首元素的位址,解引用為二維陣列首元素,即第一行的元素,故4*4=16位元組。

printf("%d\n",sizeof(a[3]));//16
a[3]表示第4行陣列的陣列名,這裡的陣列名表示第4行整個陣列,整個陣列的大小4*4=16位元組。

&陣列名–陣列名表示整個陣列

這裡取出的是整個陣列的位址。

sizeof(陣列名)–陣列名表示整個陣列

計算的是整個陣列的大小,單位是位元組。

除此之外,遇到的所有的陣列名都表示陣列首元素的位址!

陣列 陣列名 陣列位址學習

先來看乙個例子,然後通過分析例子來學習 include int a 3 int main 結果 a 0x555e35977010 a 0x555e35977010 a 1 0x555e35977014 a 1 0x555e3597701c我們來逐個分析 1.陣列名的值是個指標常量,指向陣列的第乙個元...

陣列名,陣列首位址,a, a, a 0

1 指標陣列 是陣列,但陣列中的每個元素都是指標 int p 5 如p 2 是指標,可 p 2 3 2 指向陣列的指標 是個指標,但它指向的是乙個陣列 int a 5 int p 5 與前一行比較,p相當於a,即p a 就像 int m int pm pm就相當於m.pm m p a 可與前一行合併...

陣列名,陣列首位址,a, a, a 0

1 指標陣列 是陣列,但陣列中的每個元素都是指標 int p 5 如p 2 是指標,可 p 2 3 2 指向陣列的指標 是個指標,但它指向的是乙個陣列 int a 5 int p 5 與前一行比較,p相當於a,即p a 就像 int m int pm pm就相當於m.pm m p a 可與前一行合併...