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