我对c编程非常陌生。我写了下面的代码从函数返回值
float value; //golbal variable
unsigned int data; //golbal variable
void Maxphase(void)
{
float MAX = 0.0;
unsigned int i,index;
for (i=0;i<=360;i++)
{
phaseset(i);
data = readvalue();
value = voltage(data);
if(value>MAX) //find max value
{
MAX = value; //max voltage
index = i;
}
}
printf("Max Voltage Value:%f\r\n", MAX);
printf("Related index Value:%d\r\n", index);
}
上面的代码完美地工作和打印最大电压和索引。我想从这个函数中返回两个值“Max”和“index”,我必须将Max值保存在一个变量中,并将索引值保存在其他变量中。
void runCom(void){
c=getchar();
switch(c){
case '1':
Maxphase();
Vin= (I want to store MAX value of that function)
p1= (I want to store Index of that function)
break;
default:
break;
}
}
其实我想调用该函数,它必须返回两个变量MAX和索引值,因此我想将这两个值存储在不同的变量中。
我知道函数不能返回两个值。
我已经搜索过,我发现它可能与一个结构或使该函数处理与指针的参数。我尝试使用struct,如下所示。
typedef struct {
float v;
unsigned int p;
}volphase;
我已经在头文件中声明了这个结构。我将这个头文件包含在我打电话的所有文件中。
volphase Maxphase()
{
volphase vp;
float MAX = 0.0;
unsigned int i,index;
for (i=0;i<=360;i++)
{
phaseset(i);
data = readvalue();
value = voltage(data);
if(value>MAX) //find max value
{
MAX = value; //max voltage
index = i;
}
}
vp.v=MAX;
vp.p=index;
return vp;
}
这写在“bvr.c”文件中。 但我想如何在case'1(main.c)中调用这个“struct”,以及如何将vp.v存储在一个变量中,并将vp.p存储在另一个变量中。
如果在编写struct时出现任何错误,请告诉我。或者返回两个值的任何其他最简单的方法。
请帮助我如何做到这一点。
您的意思是'Maxphase()''来返回vp'? – chrisaycock
@chrisaycock是的,现在你可以看看我编辑。我正在返回vp,但是如何在case'1'中调用这个结构并将这两个值vp.v存储在某个变量中,并将vp.p存储在另一个变量中。 – PRV