在數組中有四個元素,所以它的大小應該是4bit * 4 = 16.(一個int數據類型在我的系統中需要4位來存儲值)。但是當我運行這段代碼時,我只獲得了8位,尺寸爲dynamicArray
。sizeof動態數組不正確
#include <stdio.h>
#include <stdlib.h>
int main(void) {
//Dynamic arrays save memory by creating a pointer that stores
//the beginning of the array
int *dynamicArray = malloc(20 * sizeof(int));
*dynamicArray = 10;
printf("Address %x stores value %d\n", dynamicArray, *dynamicArray);
dynamicArray[1] = 20;
printf("dynamicArray[1] stores value %d\n", dynamicArray[1]);
dynamicArray[2] = 45;
printf("dynamicArray[2] stores value %d\n", dynamicArray[2]);
dynamicArray[3] = 34;
printf("dynamicArray[3] stores value %d\n", dynamicArray[3]);
printf("The size of dynamicArray is %d\n", sizeof(dynamicArray));
// Release unused memory:
free(dynamicArray);
return EXIT_SUCCESS;
}
這裏是輸出圖像。
還建議我網站對C檢查內置功能性或瞭解更多關於他們的。 謝謝。
「*建議我爲C網站檢查內置的函數屬性或瞭解它們更多*」 - 對不起,但這是離題。只需谷歌功能獲取其細節。 –
好的。謝謝 –
並使用'%p'打印地址,而不是'%x'。 –