c - 将结构传递给另一个 .c 文件中的函数,但它不指向正确的结构

标签 c file struct

我正在尝试将结构传递给函数,但我将结构传递给的函数位于另一个 .c 文件中。

当我运行调试时,另一个文件中的结构地址不同,因此变量不会在接收函数中更新。我这样做的原因是因为我的程序中有各种菜单,我想为每个菜单创建一个单独的文件。

在 defs.h 文件中

typedef struct{ 
    byte min;       
    byte max;       
}menuOptionValue_s;

在 menu.h 文件中

void draw_menuOption(menuOptionValue_s);

在 menu.c 文件中

#include "defs.h"
#include "menu.h"

void draw_menuOption(menuOptionValue_s menu){
     byte value = menu.max;
     draw(x,y,value);
}

在 settings.c 文件中

#include "defs.h"
#include "menu.h"
void setting_Init(void);
menuOptionValue_s setting;
menuOptionValue_s second_setting;

void setting_Init(void){
     setting.max = 10;
     setting.min = 1;
     second_setting.max = 20;
     second_setting.min = 11;
     draw_menuOption(setting);
     draw_menuOption(second_setting);
}

我希望能够从任何 .c 文件调用 draw_menuOption() 并在这些 .c 文件中传递结构 我提供的代码明显缩小了, setting_Init() 在 main.c 中调用了一次, draw_menuOption(setting) 从 setting.c 中的不同函数中调用,我只是想表明我实际上是在调用它。

最佳答案

您正在按值 传递对象。这意味着制作了一个副本。

如果您想影响原始对象,请传递一个引用或指针。

该主题应该在您的书中尽早涵盖。

关于c - 将结构传递给另一个 .c 文件中的函数,但它不指向正确的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56510286/

相关文章:

检查双端队列实现中的无效指针

c++ - C 与 C++ 中的 struct 和 typedef

C、if 语句和 strcmp

file - 在scala中逐行比较两个文件

c - 通过参数引用更新C中的全局变量

file - 在 Unix 中如何确定文件名是否有任何扩展名?

java - 哈夫曼压缩文件(得到树但无法压缩)- Java

struct - 递归打印 struct in `fmt::Display`

c - 列 "symbol"显示地址而不是函数名

c - 重新分配结构中的元素(尤其是指针)