陣列的運用

2021-08-03 21:03:59 字數 2743 閱讀 6682

int main() 

; printf(「%p\n」, a);// 

printf(「%p\n」, a+1); 

printf(「%d\n」, sizeof(*a)); 

// *a中a表示整型陣列的首元素位址,*a表示首元素,整型陣列,乙個元素佔4個位元組。

printf("%p\n", &a);

printf("%p\n", &a+1);

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

//&a表示整個陣列的位址,加上*表示整個陣列,這是乙個包含四個元素的整型陣列,所以佔16個位元組。

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

//陣列名單獨放到sizeof中時代表整個陣列,因此sizeof(a)代表整個陣列所佔的記憶體,而這個陣列a是乙個整型陣列每個元素佔四個位元組,四個元素總共佔16個位元組。

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

//陣列名非單獨放到sizeof中使用時代表陣列首元素位址,因此sizeof(a+0)代表陣列a中首 元素位址所佔的記憶體,乙個位址佔四個位元組。

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

//同上,a代表首元素位址,而*a代表首元素,整型陣列乙個元素佔四個位元組,所以sizeof(*a)佔四個位元組。

printf("%d\n",sizeof(a+1));//4

//a在sizeof中非單獨使用,代表首元素位址,a+1代表第二個元素的位址,所以也佔四個位元組。

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

//a[1]代表陣列中第二個元素,整型陣列每個元素佔四個位元組。

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

//a單獨出現在&後邊時代表整個陣列,&a就代表著整個陣列的位址,因為是位址,所以佔四個位元組。

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

//上述,a單獨出現在&後面時,代表整個陣列,&a表示整個陣列的位址,加上*代表整個陣列,即*&a代表整個陣列所有的元素,即佔16位元組。

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

//&a代表整個陣列的位址,之後加1,程式設計整個陣列後面的位址,因為是位址,所以還佔四個位元組。

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

//a[0]陣列中第乙個元素,取位址佔四個位元組。

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

//a[0]+1陣列中第二個元素,取位址,同理佔四個位元組。

return 0;

}

int main() 

; printf(「%d\n」, sizeof(arr));//6 

//陣列名單獨存在於sizeof後面代表整個陣列,因為是字元陣列,陣列中每個元素佔乙個位元組,所以6各元素總共佔6個位元組。 

printf(「%d\n」, sizeof(arr+0));//4 

//陣列名非單獨作用於sizeof後,代表陣列首元素位址,首元素位址加上0還是首元素位址,位址佔四個位元組。 

printf(「%d\n」, sizeof(*arr));//1 

//同理 arr代表首元素位址,*arr代表首元素,因為是字元陣列,乙個元素佔乙個位元組。 

printf(「%d\n」, sizeof(arr[1]));//1 

//arr[1]表示陣列第二個元素,字元陣列乙個元素佔乙個位元組。 

printf(「%d\n」, sizeof(&arr));//4 

// &arr 代表整個陣列的位址,而位址只佔四個位元組。 

printf(「%d\n」, sizeof(&arr+1));//4 

// &arr+1代表整個陣列後面相連的位址,位址佔四個位元組。 

printf(「%d\n」, sizeof(&arr[0]+1));//4 

//&arr[0]陣列首元素的位址,加上1後表示陣列第二個元素的位址,同樣的位址佔四個位元組。

//strlen 求乙個字串的長度,當作用於乙個字元陣列時,即從這個字元陣列的首元素位址開始向後檢查,每遇到乙個字元則加1,直到遇到\0,或者null時停止,不然會生成隨機數。

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

//x表示隨機數,因為陣列中沒有『\0』和null,所以函式strlen會一直向後面的位址檢索,會生成隨機數。

printf("%d\n", strlen(arr+0));//x

// 原因同上述

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

//err 錯誤,程式崩潰,因為*arr表示字元陣列的首元素字元a,a的ascii碼會被當做位址賦給strlen函式,函式在讀取時會發生錯誤。而致使程式崩潰。

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

// 原因同上,arr[1]是字元陣列的首元素。

printf("%d\n", strlen(&arr));//x

// 因為strlen函式執行時,無法檢索到\0和null,所以會生成隨機數。

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

//原因同上

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

//原因同上

return 0;

}

int main() 

int main() 

陣列的運用

1.在js中陣列的定義方式有兩種 var a 1,2,3,4 var b new array 1,2,3,4 當兩個陣列中只有乙個值的時候是有區別的 var a 4 此陣列只有乙個元素,為 4 var b new arr 4 此陣列有4個元素 2.通過命令對陣列的長度進行修改 例如 var a 1,...

陣列的基礎運用

陣列是同一種資料型別的集合,是乙個長度固定的持有資料型別。陣列也是引用型別 包括類,介面和陣列 中的一種,陣列內的每乙個資料稱為乙個元素,值為陣列的變數叫做引用。陣列能夠將資料進行分組,進行分類後整理有利於資料的操作。陣列的使用必須要進行宣告和初始化。陣列內只能同時存放一種資料型別的陣列 可以是基本...

陣列運用技巧

a array 0 array date 2019 12 02 time 1575216000 week 周一 1 array date 2019 12 03 time 1575302400 week 周二 2 array date 2019 12 04 time 1575388800 week 週...