gpt4 book ai didi

C使用malloc和复制数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:04 24 4
gpt4 key购买 nike

我应该遵循以下标准:

实现函数answer4(指针参数和n):

  1. 使用 n 项的 malloc() 准备一个 student_record 数组。

  2. 将参数中的学生记录复制到数组n次。

  3. 返回数组。

我附带了下面的代码,但它显然不正确。实现它的正确方法是什么?

student_record *answer4(student_record* p, unsigned int n)
{
int i;
student_record* q = malloc(sizeof(student_record)*n);
for(i = 0; i < n ; i++){
q[i] = p[i];
}
free(q);
return q;
};

最佳答案

p = malloc(sizeof(student_record)*n);

这是有问题的:您正在覆盖 p 输入参数,因此您无法引用在该行之后传递给您的数据。

这意味着您的内部循环读取初始化数据。

这个:

return a; 

也有问题 - 它会返回一个指向局部变量的指针,这不好 - 一旦函数返回,该指针就会失效。

你需要的是这样的:

student_record* ret = malloc(...);

for (int i=...) {
// copy p[i] to ret[i]
}

return ret;

关于C使用malloc和复制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10352953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com