gpt4 book ai didi

c - C 中参数中的函数指针

转载 作者:行者123 更新时间:2023-11-30 19:39:03 26 4
gpt4 key购买 nike

我必须做一个练习,其中我有一定数量的函数,并且每个函数都执行不同的操作,例如对数组中的所有负数进行排序。

此外,我必须创建一个函数 display,其中包含 3 个指向数组的参数指针、数组的大小以及接收 int 的函数名称,问题是int(函数指针)。我尝试这样做,但这不起作用,而且我不知道该怎么做才能使用函数指针正确完成此练习,因为我不明白这一点。

这是我的代码

int main (int argc, char **argv)
{
srand (time (NULL));
int arr[MAX_SIZE], second_arr[MAX_SIZE], i;

random_arr (arr);

display (arr, 20, negative_number (arr, second_arr));

system ("PAUSE");
return 0;
}

void random_arr (int *my_arr)
{
int i;
for (i = 0; i < MAX_SIZE; i++) {
*(my_arr + i) = i - 10;
}
}

int negative_number (int *arr, int *sort_arr)
{
int i;
for (i = 0; i < 20; i++) {
if (arr[i] < 0) {
sort_arr[i] = arr[i];
}
}

return sort_arr;
}

void diplay (int *arr, int size, int (*a_function) (int, int))
{
int i = 0;
for (i = 0; i < size; i++) {
printf ("%d\n", a_function);
}
}

最佳答案

可能与你的意图不同,因为你的意图不明确。但我认为这会有帮助

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX_SIZE 20

void random_arr (int size, int *my_arr);
int negative_number (int size, int *arr, int *sort_arr);
void display (int *arr, int size, int (*filter_function) (int in_size, int *in_array, int *out_array));

int main (void){
int arr[MAX_SIZE], second_arr[MAX_SIZE], i;

srand(time(NULL));
random_arr(MAX_SIZE, arr);

for(i = 0; i < MAX_SIZE; ++i)
printf("%d ", arr[i]);
puts("");
display (arr, MAX_SIZE, negative_number);

system ("PAUSE");
return 0;
}

void random_arr (int size, int *my_arr){
int i;
for (i = 0; i < size; i++) {
my_arr[i] = rand()%MAX_SIZE - MAX_SIZE/2;
}
}

int negative_number (int size, int *arr, int *sort_arr){
int i, j = 0;
for (i = 0; i < size; i++) {
if (arr[i] < 0) {
sort_arr[j++] = arr[i];
}
}
return j;//new array size
}

void display (int *arr, int size, int (*filter)(int in_size, int *in_array, int *out_array)){
int i = 0;
int *out = malloc(size * sizeof(*out));
int out_size = filter(size, arr, out);

for (i = 0; i < out_size; i++) {
printf ("%d\n", out[i]);
}
free(out);
}

关于c - C 中参数中的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37015963/

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