首页 > 代码库 > C函数实现返回多个值的方法

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\n",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\n%s\n",n3,p);  
  9.   
  10.     return 0;  
  11. }  

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

 

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

C函数实现返回多个值的方法