C语言 输入两个长度相同的数组a和b,通过指针编写一个函数,创建一个指针数组,这个指针数组的第i个元素对应了a[i]和b[i]中较大的那个元素地址,通过这个指针数组打印出每一项的较大元素
时间: 2023-06-12 14:03:30 浏览: 81
可以使用以下代码实现:
```c
#include <stdio.h>
void max_ptr(int *a, int *b, int **max_ptr_arr, int n) {
for (int i = 0; i < n; i++) {
if (a[i] > b[i]) {
max_ptr_arr[i] = &a[i];
} else {
max_ptr_arr[i] = &b[i];
}
}
}
int main() {
int a[] = {1, 3, 5, 7, 9};
int b[] = {2, 4, 6, 8, 10};
int *max_ptr_arr[5];
max_ptr(a, b, max_ptr_arr, 5);
for (int i = 0; i < 5; i++) {
printf("%d ", *max_ptr_arr[i]);
}
printf("\n");
return 0;
}
```
首先定义了一个名为 `max_ptr` 的函数,它有四个参数:两个整型数组 `a` 和 `b`,一个指向指针数组的指针 `max_ptr_arr`,以及数组的长度 `n`。
在函数内部,我们遍历了两个数组,并且将每个下标 `i` 对应的 `a[i]` 和 `b[i]` 中较大的那个元素的地址赋值给了 `max_ptr_arr[i]`。这里使用了指针的引用(即指向指针的指针),因为我们需要修改指针数组中的指针。
在 `main` 函数中,我们定义了两个数组 `a` 和 `b`,以及一个指向指针数组的指针 `max_ptr_arr`。然后我们调用了 `max_ptr` 函数,并将三个变量的地址传递给它。最后,我们遍历了 `max_ptr_arr` 数组,并打印出其中每个元素所指向的值(即原数组中较大的元素)。