图灵的猫i
2017-11-19 14:03
采纳率: 0%
浏览 1.4k

刚学C,写了一个用指针作为参数的函数返回最大值,无法执行

图片说明
图片说明
图片说明

新手入门,多谢大家

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

10条回答 默认 最新

  • COCO_AS 2017-11-19 14:43

    你要传回地址的话, 声明要改一下:

     void max_min(int * a , int n , int &max, int &min);
    
    评论
    解决 无用
    打赏 举报
  • yangyumizha 2017-11-19 16:55

    使用了未初始化的指针

    评论
    解决 无用
    打赏 举报
  • 编程一对一服务 2017-11-19 23:52

    使用了未初始化的指针

    评论
    解决 无用
    打赏 举报
  • 狗子猴子驴子 2017-11-20 01:06

    抬头试着改一下 &max, &min

    评论
    解决 无用
    打赏 举报
  • 码农u号 2017-11-20 01:43

    使用了未初始化的指针 这样改
    图片说明

    评论
    解决 无用
    打赏 举报
  • 臭伊伊 2017-11-22 14:54

    这代码写的愁人
    指针都不是这么用的,还有作用域的概念没弄懂。这么写,指针需要下点功夫深入理解下,有本书《C和指针》推荐给你
    int big,small; //指针没有地址,这么定义是最简洁的
    void max_min(const int a[],const int n,int *max,int *min)
    {
    int i; //不要用指针,这是计算索引数的
    //max = a; //你这是要干嘛?自己看看指针的概念
    *max = a[0];
    *min = a[0];
    //for(i = &a[0]; i < a + n; i++)//你这是要干嘛??把索引跟内容弄混乱了
    for(i = 0; i < n; i++)
    {
    //tmp = a[i]; //或者 tmp = *(a + i);
    if(a[i] > *max)
    {
    *max = a[i];
    printf("%d\n",*max)
    }
    }
    }

    评论
    解决 无用
    打赏 举报
  • 弗洛伊德弟子 2017-12-05 18:05

    1楼那个真是不懂,就不要乱说,这不是C++,形参不能这样写的,应该这样定义函数
    void max_min(int *a, int n, int **max, int **min)
    调用的时候是这样 max_min(b, N, &big, &small)

    或者用另一种方式,修改big和small的定义
    int big, small;
    然后这样调用max_min(b, N, &big, &small),printf里用big和small,不用*big和*small

    推荐第二种,更符合常规用法

    评论
    解决 无用
    打赏 举报
  • 弗洛伊德弟子 2017-12-05 18:06

    用第二种方法的话,max_min函数里也要改

    评论
    解决 无用
    打赏 举报
  • tnt阿信 2018-01-05 04:47

    指针这个东西一定要初始化,而且如果你的函数要返回值的话,不应该是void

    评论
    解决 无用
    打赏 举报
  • 熊爱溪 2018-02-11 04:05

    #include "stdio.h"

    void max_min(int *a,int n,int *pmax,int *pmin)
    {
    int i = 0;

    *pmax = a[0];//初始化一个最大值
    *pmin = a[0];//初始化一个最小值
    
    for(i = 1; i < n;i++)
    {
        if(*pmax < a[i])//每次循环找出较大的值,循环结束就是最大值
        {
            *pmax = a[i];
        }
        if(*pmin > a[i])//每次循环找出较小的值,循环结束就是最小值  
        {
            *pmin = a[i];
        }
    }
    

    }

    int main()
    {
    int a[10] = {4,5,8,3,6,7,9,2,1,0};//数组初始化。
    int len = 10;//数组长度
    int int_max,int_min;//如果用的是指针需要初始化后才能用来保存数组

    max_min(a,10,&int_max,&int_min);//使用&将max和min地址赋值到*pmax和*pmin形参中。
    printf("the max is %d\n",int_max);
    printf("the min is %d\n",int_min);
    
    return 0;
    

    }

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题