65,184
社区成员




void foo(const int a, int* out1, int* out2)
{
*out1 = a;
*out2 = a+1;
}
void foo(const int a_input, int* out1, int* out2)
{
*out1 = a;
*out2 = a+1;
}
使用指针作为函数的参数,可以返回多个值。
如
bool foo(int input_argv, int* out_argv1, int* out_argv2)
{
// do something
if(NULL != out_argv1)
{
* out_argv1 = 222;
}
if(NULL != out_argv2)
{
* out_argv2 = 3333;
}
}
调用:
int i1 = 10, i2 = 1, i3 = 2;
foo(i1, &i2, &i3);
也可以使用 引用,如:
bool foo(int input_argv, int& out_argv1, int& out_argv2)
{
// do something
out_argv1 = 222;
out_argv2 = 3333;
}
调用:
int i1 = 10, i2 = 1, i3 = 2;
foo(i1, i2, i3);
函数是可以返回结构体的。方法如下:(其它类似)
以前以为函数的返回值只能是基本类型,但是今天被高手指出,函数的返回值可以是结构体的,特此编写了如下的测试程序:让大家见笑了。
#include <stdio.h>
typedef struct {
int a;
int b;
int c;
}str;
str change(str s)
{
s.a += 1;
s.b += 1;
s.c += 1;
return s;
}
int main(void)
{
str s1, s2;
s1.a = 1;
s1.b = 1;
s1.c = 1;
s2 = change(s1);
printf("s1.a = %d\ts1.b = %d\ts1.c = %d\n",s1.a, s1.b, s1.c);
printf("s2.a = %d\ts2.b = %d\ts2.c = %d\n",s2.a, s2.b, s2.c);
return 0;
}
typedef struct {
double lng;
double lat;
} Location;
Location gps = { 119.465265, 29.1934702};
gps = transformFromWGSToGCJ(gps);
Location transformFromWGSToGCJ(Location wgLoc)
{
Location mgLoc;
if (outOfChina(wgLoc.lat, wgLoc.lng))
{
mgLoc = wgLoc;
return mgLoc;
}
double dLat = transformLat(wgLoc.lng - 105.0, wgLoc.lat - 35.0);
double dLon = transformLon(wgLoc.lng - 105.0, wgLoc.lat - 35.0);
double radLat = wgLoc.lat / 180.0 * pi;
double magic = sin(radLat);
magic = 1 - ee * magic * magic;
double sqrtMagic = sqrt(magic);
dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
dLon = (dLon * 180.0) / (a / sqrtMagic * cos(radLat) * pi);
mgLoc.lat = wgLoc.lat + dLat;
mgLoc.lng = wgLoc.lng + dLon;
return mgLoc;
}
如上代码 函数是可以返回一个结构体的