C语言中,一个函数最多只能实现一个返回值。
int func (int b)
{
int a=5;
if (a>b)
return a;
else
return b;
return 0;
}
而在实际操作过程中,我们需要调用一个函数,实现得出几个不同结果的情况。
(1)函数返回一个数组,然后再解析数组中的每个数值的意思。
(2)指针作为参数,承载所要输出的值。
#include<stdio.h>
#define IN
#define OUT
int volume_func(IN int length,IN int width,IN int heigh,OUT int *area_pr)
{
*area_pr = 2 * (length*width + width*heigh + heigh*length) ;
return (length*width*heigh);
}
int main(int argc,char *argv[])
{
int x=2,y=3,z=4 ;
int area ;
int volume = volume_func(x,y,z,&area);
printf("volume:%d,area:%d\n",volume,area);
return 0 ;
}
在这里调用一次函数得到来个值,即area和volume。注意函数中形式。
意外收获:定义宏IN,OUT来说明每个参数是输入参数还是输出参数,形同硬件的应用。
在VC++有许多这种方法的应用:
#include <stdlib.h>
long strtol( const char *start, char **end, int base );
**end是指向指针的指针
功能:函数返回带符号的字符串start所表示的长整型数。参数base代表采用的进制方式。指针end 指向start所表示的整型数之后的部分。如果返回值无法用长整型表示,函数则返回LONG_MAX或LONG_MIN. 错误发生时,返回零。
#include<stdio.h>
#include<stdlib.h>
int main()
{
char* p = NULL;
long n3 = strtol("129gg", &p, 8); // n3 = 10
printf("%d\n%s\n",n3,p);
return 0;
}
在这里将“129gg”中数字认为是八进制,则012,十进制输出为10,p指向“9gg”