【问题标题】:how to use a struct member as argument如何使用结构成员作为参数
【发布时间】:2018-06-14 16:43:03
【问题描述】:

我正在尝试使用结构调用通道的成员在更高级别的函数中使用。是否可以只有一个参数?

typedef struct {
    int size;
    Port_PadDriver padDriver; //pad driver speed
    UserConfig *pinTable;
    Port_Mode defaultmode;
    Port_State defaultstate; //set, reset, toggle port
} DefaultConfig;    

typedef struct {
    uint32 Channel;
    Port_Pin *pin;
    Port_Mode mode;
    Port_State state; //set, reset, toggle port
} UserConfig;

void IO_init(void) {
    DefaultConfig defaultConfig;//create object
    initconfig(&defaultConfig);//set init settings
    userConfig(&defaultConfig);//overwrite settings with users settings with 
a struct array
}

是否可以创建一个 IO_SetPinHigh(int channelnum);用于在 IO_init(void) 中更改特定引脚。

【问题讨论】:

  • 变量defaultConfig应该是一个全局变量,或者至少这个变量的地址应该传递给IO_init函数。目前,您所做的任何配置都将在完成 Init 功能后丢失。

标签: c struct


【解决方案1】:

您可以使用. 运算符引用结构成员。通过这样做,您可以像任何其他变量一样单独引用该成员:

IO_SetPinHigh(defaultConfig.channel);

当然,如果你想修改这个变量,你必须传递一个指向它的指针:

IO_SetPinHigh(&defaultConfig.channel);

【讨论】:

  • 与 C++ 不同,C 中没有“通过引用传递”
  • @Jabberwocky 这对我来说措辞不好。如果要修改传递给函数的 int,则需要传递指向它的指针。相应地编辑了我的答案。
猜你喜欢
  • 2014-12-15
  • 2022-06-10
  • 1970-01-01
  • 2019-04-15
  • 1970-01-01
  • 2021-07-12
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多