我有嵌套的结构,我在向不同函数的内部结构赋值时遇到问题.我的结构定义为:
typedef struct {
double reading;
float readingTime;
int readingNum;
} Measurement;
typedef struct {
Measurement vref;
Measurement vout;
Measurement voutShort;
} Unit;
Run Code Online (Sandbox Code Playgroud)
在函数(measureUnit())中,我声明Unit unit;我调用takeMeasurement(unit)(为了清楚起见,我在下面简化),并尝试为内部Measurement结构中的某些值赋值:
takeMeasurement(Unit unit){
int readingNum = 42;
unit.vout.readingNum = readingNum;
}
Run Code Online (Sandbox Code Playgroud)
当我然后尝试访问printData(Unit unit)其中调用的值时measureUnit(),
`printf("%i", unit.vout.readingNum)`
Run Code Online (Sandbox Code Playgroud)
总是打印0.
这些价值不应该unit通过不同的功能"跟随" 吗?
C通过由参数值导致的变化被到由unit在takeMeasurement()被施加到一个副本提供给函数的参数的.将a的地址传递Unit给函数以确保调用者可以看到更改:
void takeMeasurement(Unit* unit){
int readingNum = 42;
unit->vout.readingNum = readingNum;
}
Run Code Online (Sandbox Code Playgroud)
要调用:
Unit u = { 0.0 };
takeMeasurement(&u);
Run Code Online (Sandbox Code Playgroud)
还希望将指针传递给const struct只读取值的函数,struct以避免复制该值struct,特别是如果struct它很大:
void printData(const Unit* unit)
{
printf("%i", unit->vout.readingNum);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
537 次 |
| 最近记录: |