陣列的練習

2021-08-19 02:39:57 字數 4166 閱讀 2479



sizeof與strlen的區別:

1.sizeof是運算子,strlen是函式。

2.sizeof操作符的結果型別是size_t,它在標頭檔案中typedef為unsigned int型別。該型別保證能容納實現所建立的最大物件的位元組大小;sizeof可以用型別做引數,strlen只能用char*做引數,且必須是以''\0''結尾的。strlen的結果要在執行的時候才能計算出來,時用來計算字串的長度,不是型別佔記憶體的大小。

下面看一寫運算:

1.一維陣列

#include#includeint main()

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

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

printf("%d\n", sizeof(*a));//第乙個元素,a[0],則佔空間為4byte; 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[0]));//a[0]的位址; 4

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

system("pause");

return 0;

}

2,字元陣列

char arr = ;

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

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

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

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

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

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

printf("%d\n", sizeof(&arr[0]));//arr[0]的位址; 4

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

system("pause");

return 0;

int main()

; printf("%d\n", strlen(arr));//arr的長度,strlen以\0結束,但strlen不包括\0。長度是隨機值19

printf("%d\n", strlen(arr + 0));//首元素位址; 隨機值19;

printf("%d\n", strlen(&arr[0]));//首元素位址19

//printf("%d\n", strlen(*arr));//「const char *」與「char」(arr的型別)的間接級別不同,不匹配;

//printf("%d\n", strlen(arr[1]));//「const char *」與「char」的間接級別不同

printf("%d\n", strlen(&arr));//「const char *」與「char (*)[6]」的間接級別不同,有警告;陣列的位址在數值上等於首元素相同;19

printf("%d\n", strlen(*&arr));//*(陣列的位址); 19

printf("%d\n", strlen(&arr + 1));//「const char *」與「char (*)[6]」的間接級別不同 strlen(arr)-6=13

system("pause");

return 0;

}

注意:strlen(char*)函式求的是字串的實際長度,它求得方法是從開始到遇到第乙個'\0',如果你只定義沒有給它賦初值,這個結果是不定的,它會從aa首位址一直找下去,直到遇到'\0'停止。

char arr = ;

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

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

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

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

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

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

printf("%d\n", sizeof(&arr[0]));//arr[0]的位址; 4

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

system("pause");

return 0;

char arr = ;

printf("%d\n", strlen(arr)); //arr的長度,strlen以\0結束,但strlen不包括\0。 6

printf("%d\n", strlen(arr + 0));//首元素位址; 6

printf("%d\n", strlen(&arr[0]));//首元素位址 6

//printf("%d\n", strlen(*arr)) ;//首元素,「const char *」與「char」(arr的型別)的間接級別不同,不匹配;

//printf("%d\n", strlen(arr[1]));//「const char *」與「char」的間接級別不同

printf("%d\n", strlen(&arr));//「const char *」與「char (*)[6]」的間接級別不同,有警告;陣列的位址在數值上等於首元素相同;6

printf("%d\n", strlen(*&arr));//*(陣列的位址); 6

system("pause");

return 0;

int main()

3.二維陣列

int a[3][4] = ;

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

printf("%d\n", sizeof(a[0]));//首元素的大小——首陣列的大小;16

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

printf("%d\n", sizeof(a[0]+1));//下乙個元素a[0][1]; 4

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

printf("%d\n", sizeof(*a));//a[0]; 16

printf("%d\n", sizeof(a[3]));//雖然下標不存在(不允許寫入),允許訪問 16

陣列的練習

需求 目前存在陣列 int arr 編寫乙個函式接收該陣列,然後把該陣列的0清空,返回乙個不存在0元素的陣列 步驟 1.計算出新陣列的長度。原陣列長度減去0的個數 2.class arraytest arr clearzero arr system.out.println 陣列的元 素 arrays...

JavaScript的陣列練習

1.讀取學生的10門課的成績,然後輸出10門課成績的最高分,最低分,總分,平均分.2.建立100個隨機的10到60的隨機整數,然後分別統計每個數字出現的次數 3.定義乙個函式,判斷陣列中是否所有的數字都大於0 4.封裝函式 把兩個陣列共同的元素放入乙個新的陣列,並返回新的陣列 5.定義乙個函式 可以...

陣列的方法 練習

let numbers 1 2,3 4,5 6,7 8,9 10 numbers.push 100 console.log numbers 1,2,3,4,5,6,7,8,9,10,100 let numbers 1 2,3 4,5 6,7 8,9 10 numbers.unshift 100 co...