就是找出数组a里面的最大值的下标和数值

img


就是找出数组a里面的最大值的下标和数值,哪里写错了?请您指教,谢谢!

修改如下,供参考:

#include <stdio.h>
void fun(int *s,int n,int *k);
int main()
{
    int a[6]={2,43,5,64,67,12}, p, i;//*p
    fun(a,6,&p);
    printf("max:a[%d]=%d",p,a[p]);

    return 0;
}
void fun(int *s,int n,int *k)
{
    int max=s[0],i;
    *k = 0;
    for(i=1;i<n;i++)
    {
        if(max < s[i]){
           max = s[i];
           *k = i;
        }
    }
}

你这个程序出现的问题在 k = &s[i];
你将p指针作为参数传入fun函数,其实是传入了p指针所指向的地址,而k接受了p所指向的地址,fun函数中可以改变p指针所指向地址的储存值,但是不能改变p指针本身所指向的地址。

程序可以改变一下,先给p指针分配int大小的空间,然后在fun内部,*k = s[i];, 让p指针所指向的地址储存的值变为数组最大值。