c语言二维动态数组 realloc,C中的动态数组 - 我对malloc/realloc的理解是否正确?

本文探讨了在C语言中如何使用malloc和realloc动态分配和扩展数组。示例代码创建了一个长度为10的双精度浮点数数组,并用j/100填充,然后通过realloc增加一个元素并更新新条目。讨论了在某些教程中省略类型转换以及在不同编译器环境下可能遇到的问题。最后,提到了在C++环境中使用malloc的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建长度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);

问题

1)我是不是编码这个权利?

2)教程我发现使用malloc没有把(double*)放在前面。例如。

int *pointer;

pointer = malloc(2*sizeof(int));

这并不编译我在Visual Studio 2010中,Windows 7的错误是“void类型的值不能被分配到int类型的实体”。

为什么它适用于那些教程而不适合我?我猜对了,这是因为他们使用的编译器在我的例子中自动填入(int*)?

2012-10-01

Legendre

+0

“void类型的值不能分配给int类型的实体”不是* C *编译器应该产生的错误。问题是你正在使用* C++编译器*。确保您的源文件名为'.c'。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值