我对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) 中调用这个“结构”,以及如何将 vp.v 存储在一个变量中,将 vp.p 存储在另一个变量中。
如果在编写结构中有任何问题,请建议我。或任何其他将返回两个值的最简单方法。
请帮助我如何做到这一点。