结构成员作为Function的参数

时间:2012-12-07 16:03:48

标签: c function arguments structure member

我想调用类似下面的函数,其中第一个参数是名为config的结构的成员。在此示例中,该成员称为“Filter”,它在结构中定义为int,并返回char“changeConfig”以表示其他代码的更改。

changeConfig = changeInt(config.Filter, 0, 9, LCD_PPM);

这种格式会将我的代码缩减到一个非常有限的事态,因为该结构有超过30个成员,所有成员都需要以类似的方式单独管理和更改。

以下函数“changeInt”接受值并将它们分配给intScroll()

所需的值intMin,intMax和intval。
unsigned char changeInt(int pointVal, int iMin, int iMax, char mode){

unsigned char configChange = 0;
dp = 0;
intMin = iMin;
intMax = iMax;
intVal = pointVal;

while(((keyPadBits & MENU) != MENU) && (timeout < TIMEOUT)){
    intScroll();

    if(keyPadBits & ENTER){
        pointVal = intVal; //config.Filter = intVal;  //config->Filter?
        confirmMin();
    }
}

return changeConfig;
}

这一切都编译得很好并且允许我更改函数intScroll()中的值,但是如果用“pointVal”替换它,它只会将值保存回结构配置 “config.Filter”或其他成员。问题是我希望能够在函数调用中定义成员。

有什么建议吗?

我是否需要开始引入指针来解决问题?

1 个答案:

答案 0 :(得分:2)

将指针传递给您要修改的int

unsigned char changeInt(int *pointVal, ...

当您需要修改值时,需要取消引用指针:

*pointVal = ...

调用函数时,传递要修改的变量的地址:

changeConfig = changeInt(&config.Filter, ...