【发布时间】:2021-01-05 16:20:41
【问题描述】:
我正在尝试编写一个有效的函数来接收大小为n 和a 和b 的数组。
该函数应搜索数组中的所有数字,例如b-a < array[i],并将它们收集到一个名为incoming 的新排序数组中。
例如,对于输入 11,12,8,15,3,12,3,12、b=15、a=8,输出将是一个 6 大小的数组,其中包含值 8,11,12,12,12,15(任何高于 (b) 15-(a)8 )。
这是我自己的代码尝试:
#include<stdio.h>
#include<stdlib.h>
int* f5(int arr[], int n, int a, int b, int* p)
{
int i,min,minIndex;
int* incoming = (int*)malloc(*p*sizeof(int));
for ( i = 0; i < n; i++)
{
if (arr[i]>(b - a))
{
incoming[i] = arr[i];
(*p)++;
}
}
return *incoming;
}
void main()
{
int arr[] = { 12,3,12,3,15,8,12,11 };
int p, i;
int incoming[] = f5(arr, sizeof(arr) / sizeof(arr[0]), 8,15, &p);
printf("The size is: %d and the new marahc is: ", p);
for (i = 0; i < p; i++) {
printf("%d", incoming[i]);
}
free(incoming);
}
【问题讨论】:
-
你的问题是什么?
-
你说的有效函数是什么意思,或者,为什么有人会写一个无效的函数?
-
@Jabberwocky 抱歉,我的问题是是否有人能指出我的代码有什么问题。
-
请跟进给出的编译器警告。
-
int p的地址被传递给函数,该函数使用*p来确定内存分配。p未设置为任何值。