【发布时间】:2016-01-08 03:09:04
【问题描述】:
在数组中有四个元素,所以它的大小应该是 4bit*4 = 16。(int 数据类型在我的系统中需要 4 位来存储值。)但是当我运行这段代码时,我只有 8 位作为dynamicArray 的大小。
#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。
标签: c malloc sizeof dynamic-arrays