C将结构中的嵌套结构传递给函数?

时间:2016-02-23 20:57:34

标签: c function pointers struct nested

我有一个嵌套结构问题的地址,我现在已经能够解决一段时间了。

所以我有一个ModuleStruct,它包含一个sensorStruct。 将地址传递给main中的ModuleStruct没问题。但是,当我确实想要将地址传递给内部结构时,传感器#34;所以readVoltage函数可以存储值,它失败了。 谷歌搜索和检查StackOverflow没有找到任何有效的东西。我希望我做了一些愚蠢的事情,这样很容易实现。

如果有人能指出我正确的方向(* puufh;)),那将非常高兴。

typedef struct
{
    int32_t Voltage;
    int32_t Current;
}SensorStruct;

typedef struct
{
    SensorStruct SensorData;
}ModuleStruct;


int main(void)
{
    ModuleStruct Module_Data;

    Sensor_Collect(&Module_Data);
}

void Sensor_Collect(ModuleStruct *Module_Data)
{
    /// Here is the problem, I do not know how to pass the address of the SensorStruct
    ReadVoltage(Module_Data->SensorData);   
}

void ReadVoltage(SensorStruct *Sensor_Data)
{
    Sensor_Data->Voltage = 5;
    Sensor_Data->Current = 3;
}

1 个答案:

答案 0 :(得分:3)

有效的代码。请注意,Sensor_Collect函数在 ReadVoltage函数之后定义为,因此它在调用它时会知道它的类型。始终在打开所有警告的情况下编译代码。

#include <stdio.h>
#include <stdint.h>

typedef struct {
    int32_t Voltage;
    int32_t Current;
} SensorStruct;

typedef struct {
    SensorStruct SensorData;
} ModuleStruct;

void ReadVoltage(SensorStruct *Sensor_Data) {
    Sensor_Data->Voltage = 5;
    Sensor_Data->Current = 3;
}

void Sensor_Collect(ModuleStruct *Module_Data) {
    ReadVoltage(&(Module_Data->SensorData));   
}

int main(void) {
    ModuleStruct Module_Data;

    Sensor_Collect(&Module_Data);
    printf("voltage: %d\n", Module_Data.SensorData.Voltage);
    printf("current: %d\n", Module_Data.SensorData.Current);
    return 0;
}