364904690 发表于 2015-5-16 18:02:23

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

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

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


        voidmax_min_value(int *t,int *b,int *c)//查找最大值与最小值
        {
        int i;
        for(i=0;i<10;i++,t++)
        {
                if(*t>*b)
                        b=t;
                if(*t<*c)
                        c=t;
        }
        }

小人 发表于 2015-5-16 18:41:53

本帖最后由 小人 于 2015-5-16 18:46 编辑

#include <stdio.h>


voidmax_min_value(int t[], int *b, int *c);

int main()
{
        int a = { 32, 85, 32, 59, 96, 75, 58, 98, 39, 108 };
        int max, min;
        max_min_value(a, &max, &min);
        printf("max=%d,min=%d\n", max, min);
        return 0;

}


voidmax_min_value(int t[], int *b, int *c)//查找最大值与最小值
{
        *b = t;
        *c = t;
        int i = 0;
        for (i = 0; i<10; i++)
        {
                if (t>*b)
                {
                        *b = t;
                }
                if (t<*c)
                {
                        *c = t;
                }

        }
}

freeparty 发表于 2015-5-16 19:36:40

既然问题已经解决那我来领个鱼币,顺便说一下,求助提问时采用悬赏方式{:5_97:}

json 发表于 2015-5-17 03:56:32

还有么?

柯天翔 发表于 2015-5-20 14:22:48

#include <stdio.h>
int main()
{
       voidmax_min_value(int *t,int *b,int *c, int n);
       
   int a={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);
       
          
      
}

voidmax_min_value(int *from,int *max,int *min, int n)//查找最大值与最小值
{
   int i = 0;
   for (; i<n - 1; i++)
   {
                   if (from <= from)
                   {
                           *max = from;
                   }
                   else
                   {
                           *min = from;
                   }
   }
}
这段代码可以运行得通,你的*t代表的是数组中的第一个元素,根本没有变化,而且b=t或者c=t改变的是b所指向的变量,而不是改变b所指向变量的内容。

wylove1992 发表于 2015-5-21 18:38:15

还可以这样// ConsoleApplication2.cpp : Defines the entry point for the console application.
//

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


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

voidmax_min_value(int **t, int **b, int **c)//查找最大值与最小值
{
        int i;
        for (i = 0; i<10; i++, (*t)++)
        {
                if (**t>**b)
                        *b = *t;
                if (**t < **c)
                        *c = *t;
        }
}这个是函数调用时参数传递的问题,C语言是值传递的方式传参,所以call max_min_value的时候只是将原来的p max min 复制一份成为 t b c 你对 t b c的任何操作都不会改变原来的额 p max min

ryxcaixia 发表于 2015-5-22 08:40:44

既然问题已经解决那我来领个鱼币,顺便说一下,求助提问时采用悬赏方式

大番茄 发表于 2015-5-22 22:54:32

想问一下楼主这是什么字体
页: [1]
查看完整版本: 指针怎样从函数中带回返回值?