在不同的函数中访问struct中的struct
我有嵌套结构,在不同的函数中给内部结构赋值有困难。我的结构定义为:在不同的函数中访问struct中的struct,c,struct,C,Struct,我有嵌套结构,在不同的函数中给内部结构赋值有困难。我的结构定义为: typedef struct { double reading; float readingTime; int readingNum; } Measurement; typedef struct { Measurement vref; Measurement vout; Measurement voutShort; } Unit; 在函数measureUnit中,我声明了单位
typedef struct {
double reading;
float readingTime;
int readingNum;
} Measurement;
typedef struct {
Measurement vref;
Measurement vout;
Measurement voutShort;
} Unit;
在函数measureUnit中,我声明了单位;我调用TakeMeasurementIt,为了清晰起见,我在下面对其进行了简化,并尝试将值分配给内部度量结构中的某些值:
takeMeasurement(Unit unit){
int readingNum = 42;
unit.vout.readingNum = readingNum;
}
当我尝试访问从measureUnit调用的printDataUnit中的这些值时
总是打印0
这些值不应该通过不同的函数跟随单元吗?您将结构本身传递给函数,这意味着您将结构的副本传递给函数并修改该副本,而不是原始结构。您可能希望传递指向结构的指针:
takeMeasurement(Unit* unit){
int readingNum = 42;
unit->vout.readingNum = readingNum;
}
// call it something like that
takeMeasurement(&my_unit_struct);
// ^ this means "the address of my_unit_struct"
C按值传递参数,导致takeMeasurement中对unit所做的更改应用于提供给函数的参数副本。将单元地址传递给函数,以确保调用者可以看到更改:
void takeMeasurement(Unit* unit){
int readingNum = 42;
unit->vout.readingNum = readingNum;
}
调用:
Unit u = { 0.0 };
takeMeasurement(&u);
还需要将指向const struct的指针传递给只读取结构值的函数,以避免复制结构,特别是在结构较大时:
void printData(const Unit* unit)
{
printf("%i", unit->vout.readingNum);
}
void printData(const Unit* unit)
{
printf("%i", unit->vout.readingNum);
}