利用指针写一个函数计算并返回数组最大值的位置
时间: 2024-05-06 19:16:45 浏览: 15
可以使用如下的代码实现:
```c
int* findMax(int* arr, int size) {
int* max = arr;
for (int i = 0; i < size; i++) {
if (*(arr + i) > *max) {
max = arr + i;
}
}
return max;
}
```
函数接受一个整型数组和数组大小作为参数,并返回指向数组中最大值的指针。在函数内部,使用一个指针变量 `max` 来记录当前已经遍历的元素中的最大值的位置,初始值为数组的第一个元素的位置。遍历整个数组,如果当前元素的值比 `max` 指向的元素的值大,则将 `max` 指向当前元素的位置。最后返回 `max` 的值即可。
相关问题
c语言 通过函数fun使用指针计算并返回数组最大值的位置。在主函数中输出最大值及其位置
可以使用如下的代码实现:
```c
#include <stdio.h>
int *fun(int arr[], int n) {
int max_index = 0;
for (int i = 1; i < n; i++) {
if (arr[i] > arr[max_index]) {
max_index = i;
}
}
return &arr[max_index];
}
int main() {
int arr[] = {3, 8, 2, 5, 1, 7, 9, 4, 6};
int n = sizeof(arr) / sizeof(int);
int *max_ptr = fun(arr, n);
printf("最大值为:%d,位置为:%ld\n", *max_ptr, max_ptr - arr);
return 0;
}
```
首先,在 `fun` 函数中通过循环遍历整个数组,找到最大值的位置,然后返回该位置对应的指针。
在主函数中,调用 `fun` 函数得到最大值的指针,再通过指针减去数组首地址得到最大值的位置,最后输出即可。
编写c语言程序通过函数fun计算并返回数组最大值的位置,在主函数中输出最大值及其位置
以下是一个示例程序,其中fun函数用于计算并返回数组最大值的位置:
```c
#include <stdio.h>
int fun(int arr[], int size) {
int max = arr[0];
int max_pos = 0;
for (int i = 1; i < size; i++) {
if (arr[i] > max) {
max = arr[i];
max_pos = i;
}
}
return max_pos;
}
int main() {
int arr[] = {3, 7, 2, 8, 5};
int size = sizeof(arr) / sizeof(arr[0]);
int max_pos = fun(arr, size);
int max_val = arr[max_pos];
printf("最大值为: %d,位置为: %d\n", max_val, max_pos);
return 0;
}
```
程序中,我们定义了一个名为fun的函数,该函数接受一个整数数组和其大小作为参数,并返回数组中最大值的位置。在主函数中,我们定义一个整数数组arr,并使用fun函数计算其最大值及其位置,然后输出结果。
注意,我们需要在主函数中使用数组的大小来调用fun函数,因为在C语言中,数组作为参数传递给函数时会自动转换为指向第一个元素的指针。因此,函数无法确定数组的大小,我们需要手动传递数组的大小作为参数。