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