c語言中的陣列sizeof和strlen

2021-07-30 02:17:21 字數 2525 閱讀 7714

sizeof   strlen

sizeof():  返回乙個物件或者型別所佔的記憶體位元組數。

strlen():  用來計算字串的長度,遇到"\0"結束。

我們分別從一維陣列,字元陣列,二維陣列的例子來分析。

注:陣列名代表整個陣列的時候只有兩種情況

sizeof(陣列名):陣列名單獨在sizeof中時表示整個陣列。

&陣列名:這裡的陣列名表示整個陣列。

#include int main()

; printf("%d\n",sizeof(a));// 16 整個陣列的大小

printf("%d\n",sizeof(a+0));// 4 首元素位址

printf("%d\n",sizeof(*a)); // 4 首元素

printf("%d\n",sizeof(a+1));// 4 第二個元素的位址

printf("%d\n",sizeof(a[1]));//4 第二個元素

printf("%d\n",sizeof(&a)); // 4 陣列的位址

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

printf("%d\n",sizeof(&a+1));// 4 跳過整個陣列,指向陣列後面的乙個位址

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

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

2.字元陣列。

; printf("%d\n",sizeof(arr));//6 整個陣列大小

printf("%d\n",sizeof(arr+0));//4 首元素的位址

printf("%d\n",sizeof(*arr));//1 首元素大小

printf("%d\n",sizeof(arr[1]));//1 第二個元素

printf("%d\n",sizeof(&arr));//4 陣列的位址

printf("%d\n",sizeof(&arr+1));//4 整個陣列之後的位址

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

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

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

//printf("%d\n",strlen(*arr));// error

//printf("%d\n",strlen(arr[1]));//error

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

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

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

3.二維陣列。

#include int main()

; printf("%d\n",sizeof(a));//48 整個陣列大小

printf("%d\n",sizeof(a[0][0]));//4 首元素

printf("%d\n",sizeof(a[0]));//16 第一行元素

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

printf("%d\n",sizeof(a+1));//4 第二行位址

printf("%d\n",sizeof(&a[0]+1));//4 第二行位址

printf("%d\n",sizeof(*a));//16 第一行

printf("%d\n",sizeof(*&a));//48 整個陣列

printf("%d\n",sizeof(a[3]));//16 第四行

c語言中陣列與sizeof

我以前的理解是 陣列名字就是指向陣列首元素的指標,然而用sizeof 運算元組名字,把我又弄得有些疑惑了。查了查資料,終於明白了。原來,陣列名字做形參時才被當作指標。而sizeof 並不是乙個函式,而是乙個單目運算子,所以sizeof 裡寫陣列名字,返回的就是陣列佔了多少位元組。例如 char a ...

c語言中的sizeof

一 sizeof的概念 sizeof是c語言的一種單目操作符,如c語言的其他操作符 等。它並不是函式。sizeof操作符以位元組形式給出了其運算元的儲存大小。運算元可以是乙個表示式或括在括號內的型別名。運算元的儲存大小由運算元的型別決定。二 sizeof的使用方法 1 用於資料型別 sizeof使用...

C語言中的sizeof

一 sizeof是編譯器的內建指示符 不是函式 sizeof用於計算型別或變數所佔的記憶體大小 sizeof的值在編譯期就已經確定 sizeof用於型別 sizeof type sizeof用於變數 sizeof var 或 sizeof var int var 0 printf d n sizeo...