精华内容
下载资源
问答
  • 本文介绍了一种使用数组的方法实现C语言函数返回多个值得方法。
  • 由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回多个值定义成全局变量。当函数被调用时,全局变量被更改,我们再把更改后的全局变量值应用于主调...

    慢慢更新哦!

    一、利用全局变量

    分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多。由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量。当函数被调用时,全局变量被更改,我们再把更改后的全局变量值应用于主调函数中。函数被调用后被更改后的全局变量值即为函数的数个返回值。下面以一个实例演示该方法的应用。

    例一:编写函数求3个数中的最大值与最小值。
    方法:把最大值、最小值分别定义成2个全局变量max、min,在用户自定义函数中把求出来的最大值与最小值分别赋给全局变量max、min。函数调用完毕后全局变量的max、min值即保存了函数要求返回的值。程序参考代码如下:

    #include <stdio.h>
    #include <conio.h>
    int max,min;//主角——全局变量
    void max_min(int a,int b,int c)//定义求最大最小的函数{
    max=min=a;
    if(//先省略
    }
    最后如果能打印的话,是可以答应出经过函数max_min()处理的值的
    

    二、传递数组指针
    分析:在教学过程中,我们知道C语言函数参数的传递方式有值传递与地址传递。当进行值传递时,主调函数把实参的值复制给形参,形参获得从主调函数传递过来的值运行函数。在值传递过程中被调函数参数值的更改不能导致实参值的更改。而如果是地址传递,由于传递过程中从实参传递过来的是地址,所以被调函数中形参值的更改会直接导致实参值的更改。因此,

    我们可以考虑把多个返回值作为数组元素定义成一个数组的形式,并使该数组的地址作为函数的形式参数,以传址方式传递数组参数

    。函数被调用后,形参数组元素改变导致实参改变,我们再从改变后的实参数组元素中获得函数的多个返回值。以下实例演示该方法的应用。

    实例

    展开全文
  • C语言如何让一个函数返回多个值

    万次阅读 2018-12-13 22:11:08
    一、实现方法 1.用指针和数组(数组名本质上是一个指针); 2.或是你根本就不要返回,设置一个宏观变量...3.返回多个指针怎么办呢?————使用指向指针的指针返回。 二、代码展示: 1.用指针和数组(数组名本...

    转载:https://jingyan.baidu.com/article/d169e1860d278d436711d854.html

    一、实现方法

    1.用指针和数组(数组名本质上是一个指针);

    2.或是你根本就不要返回,设置一个宏观变量(全局变量),主函数和子函数都使用,就不用返回了

    3.返回多个指针怎么办呢?————使用指向指针的指针返回。

    二、代码展示:

    1.用指针和数组(数组名本质上是一个指针)

     

    2.或是你根本就不要返回,设置一个宏观变量(全局变量),主函数和子函数都使用,就不用返回了

    3.返回多个指针怎么办呢?————使用指向指针的指针返回。

    展开全文
  • C语言基础知识:C语言函数调用怎么返回个值

    万次阅读 多人点赞 2018-09-22 11:45:29
    C语言中,函数只能返回个值,要返回个值,可以改换思路,通过其它方式做到。 1 建立数组,返回指针。 在要返回的两个值类型相同时,可以用创建数组的方式,将要返回的值存在数组中,并返回数组首地址,这样...

    在C语言中,函数只能返回一个值,要返回两个值,可以改换思路,通过其它方式做到。

    1 建立数组,返回数组首地址(指针)。

    在要返回的两个值类型相同时,可以用创建数组的方式,将要返回的值存在数组中,并返回数组首地址,这样就可以实现返回两个值的效果。
    需要注意的是,要返回数组首地址,那么返回的值不可以是局部变量,有如下几种是可以的:
    a) 使用静态局部变量存储,并返回地址;
    b) 使用全局变量存储,返回地址;
    c) 函数中动态分配内存,并返回申请到的地址,此种方法需要注意,在使用后需要释放;
    d) 在参数中传入数组地址,并返回。即返回的实际上是主调函数中的变量地址。

    2 建立结构体,返回结构体指针/结构体变量。

    将需要返回的值,写成结构体形式,并返回结构体变量或返回结构体指针,这样可以实现一个返回值中含有多组数据。

    3 当数据规模较小时,可以采用将小规模数据合并为大规模数据的方式,进行返回。

    比如,需要返回两个char型数据时,可以通过返回一个short数据,高地位分别存储各自的值。

    4 输出型参数返回

    还可以不使用返回值的方式,而是通过函数参数传值,如使用输出型参数,举个例子:对于strcpy函数原型:

    char *strcpy(char *strDest,const char *strSrc)

    解析:strDest为输出型参数。

    输出型参数与输入形参数解析:一般不带const的是输出型参数,使用const修饰的是输入形参数,如strSrc

    5 使用全局变量

     

    展开全文
  • C语言中一个函数怎样返回多个值,return不能实现?
  • C语言返回多个值

    千次阅读 2015-03-24 08:38:57
    百度上下载的,不知道源自谁。。。 笔者从事C语言教学多年,在教学中学生们常常会问到如何编写具有多个返回值的C语言函数。编写有多个返回值的函数是所有C语言教材里均没有提到的知识点,但在...或者把需要返回多个值

    百度上下载的,不知道源自谁。。。

    笔者从事C语言教学多年,在教学中学生们常常会问到如何编写具有多个返回值的C语言函数。编写有多个返回值的函数是所有C语言教材里均没有提到的知识点,但在实际教学与应用的过程中我们都有可能会遇到这样的问题。有学生也尝试了不少方法:如把多个需要返回的值作相应的处理后变成一个可以用return语句返回的数据,再在主调函数中拆开返回的数据使之变成几个值;或者把需要返回多个值的一个函数分开几个函数去实现多个值的返回。这些方法虽然最终都能实现返回要求的多个值,但从程序算法的合理性与最优化方面去考虑,显然不理想。我们知道C语言函数的返回值是通过函数中的return语句来实现的,可是每调用一次函数,return语句只能返回一个值。那么当我们希望从一个函数中返回多个值时,用什么方法去实现比较合理呢?在教学过程中,我建议学生跳出对return语句的定势思维,一步步引导学生通过几种间接方式实现多个返回值的C语言函数。以下是笔者在教学过程中引导学生采用的三种不同方法编写多个返回值的C语言函数
      
    方法1:利用全局变量
      
      分析:全局变量作为C语言的一个知识点,虽然我们都了解它的特点,但在实际教学过程中应用得并不是很多。由于全局变量的作用域是从定义变量开始直到程序结束,而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量。当函数被调用时,全局变量被更改,我们再把更改后的全局变量值应用于主调函数中。函数被调用后被更改后的全局变量值即为函数的数个返回值。下面以一个实例演示该方法的应用。
      实例1:编写函数求3个数中的最大值与最小值。
      方法:把最大值、最小值分别定义成2个全局变量max、min,在用户自定义函数中把求出来的最大值与最小值分别赋给全局变量max、min。函数调用完毕后全局变量的max、min值即保存了函数要求返回的值。程序参考代码如下:
      #include "stdio.h"
      #include "conio.h"
      int max,min;/*定义两个全局变量用于保存函数返回值*/
      void max_min(int a,int b,int c) /*定义求最大最小值的函数*/
      {max=min=a; /*初始化最大最小值*/
       if(max   if(max   if(min>b)min=b;
      if(min>c)min=c;
      }
      main()
      {int x,y,z;
      printf(" 请输入3个整数:\n");
      scanf("%d,%d,%d",&x,&y,&z);
      max_min(x,y,z) ;/*调用求最大值与最小值的函数*/
      printf("三个数中的最大值为:%d;最小值为:%d",max,min);/*输出最大值与最小值*/
      getch();
      }
      调试结果如下:
      请输入3个整数:
      5,-6,2
      三个数中的最大值为:5;最小值为:-6
      注意:该方法虽然可以实现有多个返回值的函数,但由于全局变量不能保证值的正确性(因为其作用域是全局,所以程序范围内都可以修改它的值,如果出现错误将非常难以发现),并且全局变量增加了程序间模块的耦合,所以该方法要慎用。
      
      方法2:传递数组指针
      
      分析:在教学过程中,我们知道C语言函数参数的传递方式有值传递与地址传递。当进行值传递时,主调函数把实参的值复制给形参,形参获得从主调函数传递过来的值运行函数。在值传递过程中被调函数参数值的更改不能导致实参值的更改。而如果是地址传递,由于传递过程中从实参传递过来的是地址,所以被调函数中形参值的更改会直接导致实参值的更改。因此,我们可以考虑把多个返回值作为数组元素定义成一个数组的形式,并使该数组的地址作为函数的形式参数,以传址方式传递数组参数。函数被调用后,形参数组元素改变导致实参改变,我们再从改变后的实参数组元素中获得函数的多个返回值。以下实例演示该方法的应用。
      实例2:编写函数求一维整形数组的最大值与最小值,并把最大值与最小值返回给主调函数。
      方法:以指针方式传递该一维数组的地址,然后把数组的最大值与数组的第一个元素交换,把数组的最小值与最后一个元素交换。函数被调用完毕后,实参数组中的第一元素为数组的最大值,实参数组中最后一个元素为数组的最小值,从而实现返回数组的最大值与最小值的功能。程序参考代码如下:
      #include "stdio.h"
      #include "conio.h"
      void max_min(int *ptr,int n) /*定义求数组最大值最小值的函数,传递数组指针*/
      {int i,j,k;/*j保存最大值所在位置,k保存最小值所在位置*/
      int *temp;/*用于交换位置*/
      *temp=*ptr;
      for(i=0;i{
      if(*ptr<*(ptr+i))/*最大值与第一个元素进行交换*/
      {
      k=i;
      *temp=*ptr;
      *ptr=*(ptr+k);
      *(ptr+k)=*temp ;
      }
      if(*(ptr+n-1)>*(ptr+i))/*最小值与最后一个元素进行交换*/
      {
      j=i;
      *temp =*(ptr+n-1);
      *(ptr+n-1)=*(ptr+j);
      *(ptr+j)= *temp ;}
      }
      }
      /*调用最大最小值函数*/
      main()
      {
      int A[6],i;
      for(i=0;i<6;i++)
       scanf("%d",&A[i]);
      max_min(A,6);
      printf("max=%d, min=%d\n \n",A[0],A[5]);
      getch();
      }
      调试结果如下:
      请输入6个整形数,以空格隔开:
      5 8 9 32 -6 4
      max=32,min=-6

    注意:该方法适用于多个返回值的数据类型一致的情况。当返回值数据类型不一致时,不适用该方法。
      
      方法3:传递结构体指针
      
      分析:结构体作为教学中的一个难点,教材对它介绍的内容并不多,应用的实例更是少之又少,所以学生对于结构体普遍掌握情况不理想。其实,编写返回多个值C语言函数,也可以考虑采用结构体的方式去实现。通过方法2,我们知道如果返回的数个数值的数据类型不一致,可以通过定义全局变量实现有多个返回值的C语言函数,也可以考虑把要求返回的数个值定义成一个结构体,然后同样以传递结构体指针方式把结构体的指针传递给形参结构体指针,那么函数中对形参结构体的修改即是对实参结构体的修改,函数被调用后获取的实参结构体成员即为函数的多个返回值,下面以实例演示该方法的应用。
      实例3:编写一个用户自定义函数,允许用户录入学生的基本信息(包括学号、姓名、所属班级、总评成绩),并返回这些基本信息给主调函数。
      


      方法:把学生基本信息定义成一个结构体,在用户自定义函数中传递该结构体的指针,则自定义函数中对结构体成员的录入操作即是对实参结构体成员的录入操作,从而实现多个返回值。参考代码如下:
      #include "stdio.h"
      #include "conio.h"
      struct inf{/*定义学生结构体,分别包含成员学号、姓名、班别、总评成绩*/
       char xh[12];
       char name[20];
       char class[15];
       int chj;
      };
      main(void)
      {
      struct inf a1; /*定义学生结构体类型变量*/
      void xxxx(struct inf *ptr);
      printf("请输入学号,姓名,班别,总评成绩,以空格隔开:\n") ;
      xxxx(&a1);/*调用函数,以学生结构体类型变量地址作为实参*/
      printf("学号:%s,姓名: %s,班别:%s,总评成绩:%d",a1.xh, a1.name,a1.class,a1.chj);
      getch();
      }
      void xxxx(struct inf *ptr)/*该函数实现对结构体成员数据的录入操作*/
      {
       char xh1[12],name1[20],class1[15];
       int chj1;
      scanf("%s%s%s%d",xh1,name1,class1,&chj1);
       strcpy(ptr->xh,xh1);
      strcpy(ptr->name,name1);
      strcpy(ptr->class,class1);
      ptr->chj=chj1;
       }
      调试结果如下:
      请输入学号,姓名,班别,总评成绩,以空格隔开:
      200102LiLi200185
      学号:200102,姓名: LiLi,班别:2001,总评成绩:85
      注意:当函数要求返回的多个值是相互联系的或者返回的多个值数据类型不一致时可以采用该方法。
      
      
    总结
      对于以上这三种方法,如果想要返回的数个值数据类型一致,可以考虑采用方法2;而对于不同数据类型的返回值,如果各个数值之间是相互联系的,则方法3较为合适;方法1虽然在很多情况下都可以实现多个返回值的C语言函数,但毕竟全局变量应用过程中有很多危险,要慎重使用。
      通过对以上几种方法的分析讲解,在教学过程中,学生再遇到这样的问题时,就能根据返回值的情况选择合适的途径去实现多个返回值的C语言函数。另外,如果再遇到类似的无法用教材知识点去直接解决的问题时,他们基本都能举一反三地尝试采用间接方式去解决。

     

    展开全文
  • C语言函数多个返回值

    千次阅读 2020-04-21 20:40:50
    函数返回多个值 在平时项目中,我们会遇到一个函数要返回多个值的问题。但是c语言规定一个函数只能返回一个值,也就是说我们不能用return一个变量的方式返回多个值。那该怎么办呢? 其实很简单,结构体轻而易举实现...
  • 关于C语言函数返回数组的问题

    万次阅读 2016-11-29 23:03:52
    关于C语言函数返回数组 c语言中函数不能直接返回一数组,但是可以用其他方式实现类似功能,不过需要注意: 1、该数组不能是返回函数的局部变量数组,因为局部变量数组在退出函数后会被释放。 可以是全局变量,...
  • 关于C语言函数返回数组c语言中函数不能直接返回一数组,但是可以用其他方式实现类似功能,不过需要注意:1、该数组不能是返回函数的局部变量数组,因为局部变量数组在退出函数后会被释放。可以是全局变量,...
  • 如何编写有多个返回值的C语言函数

    千次阅读 2016-09-29 12:20:07
    C语言函数的返回值是通过函数中的return语句来实现的,但是每调用一次该函数,return语句只能返回一个值,所以当我们在编写C语言代码时,想返回多个返回值,直接用return语句是无法实现的。 1)利用全局变量: ...
  • C语言函数

    万次阅读 多人点赞 2019-08-03 19:54:19
    C程序都至少有一个函数,即主函数main(),如果程序的任务比较简单,全部的代码都写在main()函数中,但是,在实际开发中,程序的任务往往比较复杂,如果全部的代码都写在main()函数中,main()函数将非常庞大臃肿...
  • C语言 函数传递多个字符串参数

    千次阅读 2020-10-02 22:38:33
      我们需要定义一个、或多个全局变量 getStr1、getStr2、…,用来接收来自函数中的字符串。 char getStr1[100]; char getStr2[100]; // ... 多个变量 char* fun() { strcpy(getStr1 , "dealStr1 "); strcpy...
  • Python学习之函数返回多个值

    千次阅读 2019-03-24 10:37:29
    Python学习之函数返回多个值 问题的引出 Python中,一个函数能不能一次返回多个值? 在C语言中,函数最多返回一个值,如果要返回多个值,可以把这些值封装在一个结构体中。注意,C语言不允许函数返回整个数组。 ...
  • 编写有多个返回值的函数是所有C语言教材里均没有提到的知识点...或者把需要返回多个值的一个函数分开几个函数去实现多个值的返回。这些方法虽然最终都能实现返回要求的多个值,但从程序算法的合理性与最优化方面去考...
  • unsigned int reverse_bit(unsigned int value) ...如在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(2550136832) 10011000000000000000000000000000 注意:由于是在32位机器上
  • C++ 利用指针和结构体实现一个函数返回多个值

    千次阅读 多人点赞 2017-03-22 21:07:14
    介绍利用指针与利用结构体作为函数的返回值,实现一个函数返回多个值
  • C语言 函数返回数组和指针区别

    千次阅读 2017-09-14 10:42:32
    ”存放在常量区,它在程序运行结束由操作系统回收,而指针p存放的是它的地址,在函数返回时候把它的地址返回给主函数,所以可以正确打印字符串。 函数str8(),在主函数未调用,因为调用程序会出现栈溢出,程序会停止...
  • 结果今天这题目引发我了我的一问题,题目如下: 5数求最值 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述设计一从5整数中取最小数和最大数的程序 输入输入只有一组测试数据,为五不...
  • C语言--返回指针函数

    千次阅读 2018-05-15 21:56:15
    我们知道,一函数可以带回一整型、字符、实型等,函数还可以带回一指针型的...这适当的指针其类型应为函数返回指针所指向的类型。 这样的函数比较难于理解,其实只要把它当做一般的函数来处理就容易...
  • C语言怎么实现多个值输出?

    千次阅读 2019-01-27 21:54:14
    怎么实现多个值输出? C语言函数只能有一个输出,这是受当时编程方法的影响,是一个历史问题。在C语言发明前,大多数人还在用汇编语言的时候,编程效率底下,bug层出,维护困难。所以提出了一个革命性的思想,结构...
  • C语言函数返回数组

    千次阅读 2018-02-04 21:48:41
    可以的,但大多数方式都是说将数组的首地址作参数输入,或是指针函数返回数组的首地址。而这种方式并非真正意义上的“输入”或“输出”。 参数是一新的量被附了参考量的,无论函数内部如何改变这参数,都...
  • C语言函数传递与传递

    千次阅读 2016-01-25 11:53:56
    C语言提供了两种参数传值机制:一种是传递,就是将实参的赋值给形参,换句话说,形参是实参的一份拷贝,因此函数对形参的改变并不影响实参;另一种是参数传递,是一种地址传递,是指将实参的地址赋值给形参,即...
  • C语言函数如何返回字符串

    千次阅读 2019-05-23 21:06:43
    有些时候我们需要函数返回字符串但是总不能定义一字符串函数吧?所以,这里介绍几种方法让函数返回字符串。 方法一:全局变量 全局变量是最简单的方法,如例子: #include <stdio.h> char chName...
  • 详细说明C语言函数传参方式,传递和地址传递

    千次阅读 多人点赞 2019-05-27 14:26:31
    2、变量名:变量名实际上是一地址的符号,当程序编译的时候,操作系统会为变量在内存中分配内存空间,所以每一变量都会有一实际的内存地址。系统将变量名和内存地址关联起来,这样我们在操作变量名的时候,...
  • C语言函数介绍

    千次阅读 多人点赞 2018-07-07 20:03:53
    C语言函数 作者:任尚益 ...
  • 交换两变量的,容易联想到【两量交换借助中间变量】的方法。 若用函数调用的方式来实现交换,沿用上述思路初步实现如下: #include&lt;stdio.h&gt; void exchange(int,int); void exchange(int one,...
  • Python函数如何返回多个值,如何在调用函数时分别接收返回的多值,返回值为空或无返回值情况如何解决
  • C语言函数详解

    千次阅读 多人点赞 2019-06-05 23:38:44
    函数c语言 面向过程(函数)定义返回值函数调用:函数声明:局部变量:全局变量:static局部变量(静态变量)const变量static全局变量递归函数: 自己(间接或直接)调用自己.函数指针:main 函数变长参数 c语言 面向过程(函数)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 214,699
精华内容 85,879
关键字:

c语言函数返回多个值

c语言 订阅