我正在学习如何在 C 中创建动态一维数组。下面的代码尝试执行以下操作:
- 使用
malloc
,创建一个长度的动态数组10
,其中包含类型的值double
。 - 将数组的每个条目设置为
j/100
forj = 0, 1,..., 9
。然后打印出来。 - 使用 . 在数组末尾添加一个额外的空条目
realloc
。 - 将新条目设置为
j/100
并再次打印出每个条目。
测试:
double* data = (double*)malloc(10*sizeof(double));
for (j=0;j<10;j++)
{
data[j]= ((double)j)/100;
printf("%g, ",data[j]);
}
printf("\n");
data = (double*)realloc(data,11*sizeof(double));
for (j=0;j<11;j++)
{
if (j == 10){ data[j]= ((double)j)/100; }
printf("%g, ",data[j]);
}
free((void*) data);
问题
我编码对吗?
我发现教程
malloc
没有放在(double*)
前面。例如,整数 * 指针;
指针 = malloc(2*sizeof(int));
这不适用于我在 Visual Studio 2010、Windows 7 上编译。错误消息是
void 类型的值不能分配给 类型的实体
int
。
为什么它适用于那些教程而不适用于我?我是否正确猜测这是因为他们使用的编译器(int*)
在我的示例中自动为他们填写?