c语言map函数
时间: 2023-07-30 20:07:11 浏览: 276
C语言中没有内置的map函数,但是可以使用指针和循环来实现类似于map的功能。例如,可以定义一个函数,接受一个数组和一个函数指针作为参数,然后将函数指针作用于数组的每个元素,将结果存储到另一个数组中返回。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int square(int x) {
return x * x;
}
int* map(int arr[], int n, int (*func)(int)) {
int* result = malloc(sizeof(int) * n);
for (int i = 0; i < n; i++) {
result[i] = (*func)(arr[i]);
}
return result;
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int* squared_arr = map(arr, 5, square);
for (int i = 0; i < 5; i++) {
printf("%d ", squared_arr[i]);
}
free(squared_arr);
return 0;
}
```
输出结果为:1 4 9 16 25
在上面的代码中,我们定义了一个函数square,它接受一个整数并返回该整数的平方。然后我们定义了一个map函数,它接受一个整数数组、数组长度和一个函数指针作为参数,然后将该函数作用于数组的每个元素,将结果存储到另一个数组中返回。在主函数中,我们调用map函数,并将square函数指针作为参数传递给它,然后输出结果。最后,我们释放了存储结果的数组。
阅读全文