zoukankan      html  css  js  c++  java
  • C函数实现返回多个值的方法

    C语言中,一个函数最多只能实现一个返回值。

    [cpp] view plain copy
     
    1. int func (int b)    
    2. {    
    3.    int a=5;    
    4.    if (a>b)    
    5.       return a;    
    6.    else    
    7.       return b;    
    8.     
    9.    return  0;    
    10. }    

    通过在函数中使用返回语句,返回一个值给函数,同时终止函数的调用,返回主函数。

    而在实际操作过程中,我们需要调用一个函数,实现得出几个不同结果的情况。

    (1)函数返回一个数组,然后再解析数组中的每个数值的意思。

    (2)指针作为参数,承载所要输出的值。

    [cpp] view plain copy
     
    1. #include<stdio.h>  
    2.   
    3. #define IN  
    4. #define OUT  
    5.   
    6. int volume_func(IN int length,IN int width,IN int heigh,OUT int *area_pr)  
    7. {  
    8.     *area_pr = 2 * (length*width + width*heigh + heigh*length) ;  
    9.     return (length*width*heigh);  
    10. }  
    11. int main(int argc,char *argv[])  
    12. {  
    13.       
    14.     int x=2,y=3,z=4 ;  
    15.     int area ;  
    16.     int volume = volume_func(x,y,z,&area);  
    17.     printf("volume:%d,area:%d ",volume,area);  
    18.       
    19.     return 0 ;  
    20. }  

    在这里调用一次函数得到来个值,即area和volume。注意函数中形式。

    意外收获:定义宏IN,OUT来说明每个参数是输入参数还是输出参数,形同硬件的应用。

    在VC++有许多这种方法的应用:

    [cpp] view plain copy
     
    1. #include <stdlib.h>  
    2. long strtol( const char *start, char **end, int base );  

    **end是指向指针的指针

    功能:函数返回带符号的字符串start所表示的长整型数。参数base代表采用的进制方式。指针end 指向start所表示的整型数之后的部分。如果返回值无法用长整型表示,函数则返回LONG_MAXLONG_MIN. 错误发生时,返回零。

    [cpp] view plain copy
     
    1. #include<stdio.h>  
    2. #include<stdlib.h>  
    3.   
    4. int main()  
    5. {  
    6.     char* p = NULL;  
    7.     long n3 = strtol("129gg", &p, 8);   // n3 = 10  
    8.     printf("%d %s ",n3,p);  
    9.   
    10.     return 0;  
    11. }  

    在这里将“129gg”中数字认为是八进制,则012,十进制输出为10,p指向“9gg”

    http://blog.csdn.net/callinglove/article/details/7840841

  • 相关阅读:
    Hoppz板子
    [cf] Invoking the Magic
    [acm]关于字符的处理
    [acm]排序总结
    [acm]循环队列(不是自己写queue)
    [acm]关于map的一些知识
    [acm]二进制枚举
    P1005 矩阵取数游戏 区间DP
    ICPC North Central NA Contest 2017 (部分)
    灾后重建 弗洛伊德最短路
  • 原文地址:https://www.cnblogs.com/findumars/p/6360856.html
Copyright © 2011-2022 走看看