我正在学习如何在C中创建动态1D数组。下面的代码尝试这样做:
>创建一个长度为10的动态数组,它使用双精度数组
malloc的。
>为j = 0,1,…,9设置数组的每个条目为j / 100。然后打印
出来。
>使用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);
问题
我是否编码这个权利?
2)教程我发现使用malloc而不把(double *)放在前面。例如。
int *pointer;
pointer = malloc(2*sizeof(int));
这在Visual Studio 2010,Windows 7上不会为我编译。错误是“类型为void的值不能分配给int类型的实体”。
为什么这些教程不适合我?我猜猜是因为他们使用的编译器在我的例子中自动填写(int *)?