c語言 陣列小練習

2021-08-28 07:16:15 字數 3415 閱讀 2654

解題思路

1.對於sizeof(  )

1.陣列名單獨放在sizeof()內部,陣列名表示整個陣列,sizeof(陣列名)計算的是整個陣列的大小,單位是位元組。

2.&陣列名,陣列名表示整個陣列,&陣列名,取出的是整個陣列的位址。

3.除此之外所有的陣列名都表示整個首元素位址。

2.對於strlen(),它尋找的是『\0』,有『\0』終止,沒有繼續數。

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

2.printf("%d\n", sizeof(a+0)); // 4 不是單獨放在sizeof()內是第乙個元素的位址

3.printf("%d\n", sizeof(*a)); //4 *a就是啊a

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

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

6.printf("%d\n", sizeof(&a)); // 4 位址都是4個位元組(32平台)

7.printf("%d\n", sizeof(&a+1)); //4 4後面的位址

8.printf("%d\n", sizeof(&a));/4 第乙個元素的位址

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

1.printf("%d\n", sizeof(a));

"%d\n", sizeof(a+0));

//4 位址

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

//1 字元a

4.printf("%d\n", sizeof(a));

"%d\n", sizeof(&a));

"%d\n", sizeof(&a+1));

"%d\n", sizeof(&a+1));

//4 f的後面位址

8.printf("%d\n", sizeof(&a+1));

//4 第二個元素的位址

1.printf("%d\n", strlen(a));

//隨機值 因為沒有\0

2 printf("%d\n", strlen(a+0));

//隨機值 並且和上乙個一樣

3.printf("%d\n", strlen(*a));

//錯誤

4.printf("%d\n", strlen(a));

//錯誤

5.printf("%d\n", strlen(&a));

//隨機值

6.printf("%d\n", strlen(&a+1));

//隨機值 和1的隨機值差6

7.printf("%d\n", strlen(&a+1));

//隨機值 和1的隨機值差1

1.printf("%d\n",sizeof(arr));  //7 計算大小有'\0'

2.printf("%d\n",sizeof(arr+0)); // 4 位址是4位元組

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

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

5.printf("%d\n",sizeof(&arr)); //4 取位址32位平台是4位元組,64位平台是8位元組

6.printf("%d\n",sizeof(&arr+1)); //4 取位址32位平台是4位元組,64位平台是8位元組

1.printf("%d\n",strlen(arr)); //6

2.printf("%d\n",strlen(arr+0));//6

3.printf("%d\n",strlen(*arr)); //錯誤 傳的是乙個值,所以錯誤。

4.printf("%d\n",strlen(arr));//錯誤 傳的是乙個值

5.printf("%d\n",strlen(&arr)); //6 &arr就是從頭數,數到『\0』』停止

6.printf("%d\n",strlen(&arr+1));// 隨機值,因為將整個arr跳過

7.printf("%d\n",strlen(&arr+1));//5 從第二個元素向後數

1.printf("%d\n",sizeof(p)); //4 指標變數都是4個位元組

2.printf("%d\n",sizeof(p+1));//4 p+1是b的位址

3.printf("%d\n",sizeof(*p));//1 a的大小

4.printf("%d\n",sizeof(p));// 同上

5.printf("%d\n",sizeof(&p));//4

6.printf("%d\n",sizeof(&p+1));//4 p是個指標變數,指向是a的位址,p是變數有自己的位址,char **pp =&p;pp是個二級指標,指向的是p的位址,指向的是char *型別的變數,加一跳過的是乙個char *的大小

7.printf("%d\n",sizeof(&p+1));//4

1.printf("%d\n",strlen(p)); //6

2.printf("%d\n",strlen(p+1));//5

3.printf("%d\n",strlen(*p));//錯誤 因為傳的是個值

4.printf("%d\n",strlen(p));//同上

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

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

7.printf("%d\n",strlen(&p+1));//5 從第二個元素後面數

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

2.printf("%d\n",sizeof(a[0][0]));//4

3.printf("%d\n",sizeof(a[0]));//16 第一行的大小

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

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

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

7.printf("%d\n",sizeof(*a));//16 不是單獨放,a表示第一行的位址

8.printf("%d\n",sizeof(a[3])); //16 sizeof()內部的表示式是不參與運算的,所以結果是16,雖然第4行不存在但是不訪問

sizeof關鍵字是在編譯時,括號裡的表示式是在執行時的,所以不執行sizeof的表示式。

C語言練習之陣列小練習

1.選修某課程的學生共10人,學生的資訊包括學號 班級 姓名 成績,按成績高低輸出學生名單 用選擇法排序 include include include define n 10 選修某課程的學生共10人,學生的資訊包括學號 班級 姓名 成績,按成績高低輸出學生名單 用選擇法排序 intmain fo...

C語言小練習

1.有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?使用陣列 includeint main void int num 0,i,j 0 scanf d num for i 0 i 10 i if i num for i 0 i 10 i 2.有乙個長度為10的陣列,根據下...

C語言小練習

1.列印100 200之間的素數 include include include 100 200間素數求法 int main if j i printf d n i 2.偶數都為2的倍數,所以均不為素數,這樣我們就可以排除掉偶數,直接判斷奇數是不是素數 int i 100 for i 100 i 2...