gpt4 book ai didi

C - 返回指向数组的指针

转载 作者:太空宇宙 更新时间:2023-11-04 02:42:55 25 4
gpt4 key购买 nike

我必须写一个带有签名的函数

 int *greater (int n[], int length, int value) 

返回指向数组的指针,该数组包含 n[] 中大于某个值的元素。返回的数组必须恰好是容纳大于 value 的值的长度,并且没有未使用的元素。

我有以下代码:

#include <stdio.h>

int k=0, v[100];

int * greater(int n[], int length, int value)
{
for (int i=0; i<length-1; i++)
if (n[i]>value)
{
v[k]=n[i];
k++;
}
int *p=v;
return p;
}
int main ()
{
int a[]={1,2,3,4,5};
int *p=greater (a,5,3);
int *end; end=v+k;
while (p<=end)
{
printf ("%i ", *p);
p++;
}
}

问题是 p 只会保留值 4,因此它会打印 4 0,而不是 4 5。知道我做错了什么吗?

最佳答案

要解决您的问题,请不要使用全局 数组( v[100]; )。相反,

  1. greater() 中定义一个指针
  2. 使用 malloc() 动态分配内存.
  3. 根据需要使用 realloc() 调整内存大小
  4. 返回指针。

根据@alk 先生的评论,您可以使用全局变量k 获取数组中元素的数量。 .

注意:一旦你用完内存,别忘了 free() 来自 main() 的指针.

BTW,推荐签名main()int main(void)


编辑:

此外,对于逻辑部分,如@BLUEPIXY@karma_geek先生评论中提到的,请注意

  1. 将循环条件更改为for (int i=0; i<length; i++)
  2. 更改 while循环到 while (p<end)

关于C - 返回指向数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30077782/

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