鱼C论坛

 找回密码
 立即注册
查看: 1502|回复: 7

指针怎样从函数中带回返回值?

[复制链接]
发表于 2015-5-16 18:02:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 364904690 于 2015-5-16 18:03 编辑

为什么调用max_min_value函数后,指向最大值的指针b和指向最小值的指针c不能带出返回值呢?
  1. /*****以指针为参数,调用函数,从数组中找出最大值 与最小值  *****/
  2. #include <stdio.h>
  3. int main()
  4. {
  5.         int a[10]={32,85,32,59,96,75,58,98,39,108};
  6.         int *p,*max,*min;
  7.         void  max_min_value(int *t,int *b,int *c);
  8.         p=max=min=a;
  9.         max_min_value(p,max,min);
  10.     printf("max=%d,min=%d\n",*max,*min);
  11. }


  12.         void  max_min_value(int *t,int *b,int *c)  //查找最大值与最小值
  13.         {
  14.         int i;
  15.         for(i=0;i<10;i++,t++)
  16.         {
  17.                 if(*t>*b)
  18.                         b=t;
  19.                 if(*t<*c)
  20.                         c=t;
  21.         }
  22.         }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-5-16 18:41:53 | 显示全部楼层

回帖奖励 +10 鱼币

本帖最后由 小人 于 2015-5-16 18:46 编辑
  1. #include <stdio.h>


  2. void  max_min_value(int t[], int *b, int *c);

  3. int main()
  4. {
  5.         int a[10] = { 32, 85, 32, 59, 96, 75, 58, 98, 39, 108 };
  6.         int max, min;
  7.         max_min_value(a, &max, &min);
  8.         printf("max=%d,min=%d\n", max, min);
  9.         return 0;

  10. }


  11. void  max_min_value(int t[], int *b, int *c)  //查找最大值与最小值
  12. {
  13.         *b = t[0];
  14.         *c = t[0];
  15.         int i = 0;
  16.         for (i = 0; i<10; i++)
  17.         {
  18.                 if (t[i]>*b)
  19.                 {
  20.                         *b = t[i];
  21.                 }
  22.                 if (t[i]<*c)
  23.                 {
  24.                         *c = t[i];
  25.                 }

  26.         }
  27. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-16 19:36:40 | 显示全部楼层

回帖奖励 +10 鱼币

既然问题已经解决那我来领个鱼币,顺便说一下,求助提问时采用悬赏方式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-17 03:56:32 | 显示全部楼层
还有么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-20 14:22:48 | 显示全部楼层
#include <stdio.h>
int main()
{
         void  max_min_value(int *t,int *b,int *c, int n);
         
     int a[10]={32,85,32,59,96,75,58,98,39,108};
     int max = 0, min = 0;
     
     max_min_value(a, &max, &min, sizeof(a)/4);
     
     printf("max = %d,min = %d\n", max, min);
         
          
        
}

void  max_min_value(int *from,int *max,int *min, int n)  //查找最大值与最小值
{
   int i = 0;
   for (; i<n - 1; i++)
   {
                   if (from[i] <= from[i+1])
                   {
                           *max = from[i+1];
                   }
                   else
                   {
                           *min = from[i];
                   }
   }
}
这段代码可以运行得通,你的*t代表的是数组中的第一个元素,根本没有变化,而且b=t或者c=t改变的是b所指向的变量,而不是改变b所指向变量的内容。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-21 18:38:15 | 显示全部楼层
还可以这样
  1. // ConsoleApplication2.cpp : Defines the entry point for the console application.
  2. //

  3. #include "stdafx.h"
  4. #include <stdio.h>


  5. int _tmain(int argc, _TCHAR* argv[])
  6. {
  7.         /*****以指针为参数,调用函数,从数组中找出最大值 与最小值  *****/
  8.                 int a[10] = { 32, 85, 32, 59, 96, 75, 58, 98, 39, 108 };
  9.                 int *p, *max, *min;
  10.                 p = max = min = a;
  11.                 void  max_min_value(int **t, int **b, int **c);
  12.                 max_min_value(&p, &max, &min);
  13.                 printf("max=%d,min=%d\n", *max, *min);
  14.         getchar();
  15.         return 0;
  16. }

  17. void  max_min_value(int **t, int **b, int **c)  //查找最大值与最小值
  18. {
  19.         int i;
  20.         for (i = 0; i<10; i++, (*t)++)
  21.         {
  22.                 if (**t>**b)
  23.                         *b = *t;
  24.                 if (**t < **c)
  25.                         *c = *t;
  26.         }
  27. }
复制代码
这个是函数调用时参数传递的问题,C语言是值传递的方式传参,所以call max_min_value的时候只是将原来的p max min 复制一份成为 t b c 你对 t b c的任何操作都不会改变原来的额 p max min
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-22 08:40:44 | 显示全部楼层
既然问题已经解决那我来领个鱼币,顺便说一下,求助提问时采用悬赏方式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-22 22:54:32 | 显示全部楼层
想问一下楼主这是什么字体
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-19 22:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表