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 OUTint 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 = 10printf("%d\n%s\n",n3,p);return 0;
}
在这里将“129gg”中数字认为是八进制,则012,十进制输出为10,p指向“9gg”