struct example{
int a;
int b;
};
main.c
中的
我可以在main.c
中写这个结构,如下所示
struct example obj;
obj.a=12;
obj.b=13;
有没有办法可以直接写入此结构的全局内存位置,以便可以在程序的任何位置访问这些值?
答案 0 :(得分:0)
两种方式:
您可以将其作为地址并将其作为参数传递给需要访问此数据的函数
&obj
或者,使用全局:
在任何功能之外,写下struct example obj;
在标题中声明:
struct example {
int a;
int b;
};
extern struct example obj;
编辑:阅读此问题可能是一个好主意:How do I use extern to share variables between source files?
答案 1 :(得分:0)
有两种方法可以实现这一目标:
<强> 1 强>
创建包含以下语句的头文件:
/* header.h */
extern struct example obj;
将以下定义添加到一个且仅一个源文件中:
/* source.c */
struct example obj;
任何需要直接访问obj
的源文件都应包含此头文件。
/* otherFile.c */
#include "header.h"
void fun(void)
{
obj.a = 12;
obj.b = 13;
}
<强> 2 强>
创建getter / setter函数:
/* source.c */
static struct example obj;
void set(const struct example * const pExample)
{
if(pExample)
memcpy(&obj, pExample, sizeof(obj));
}
void get(struct example * const pExample)
{
if(pExample)
memcpy(pExample, &obj, sizeof(obj));
}
/* otherFile.c */
void fun(void)
{
struct example temp = {.a = 12, .b = 13};
set(&temp);
get(&temp);
}
使用此方法,obj
可以定义为static
。
答案 2 :(得分:-3)
您可以使用大括号初始化程序对其进行初始化,如:
struct example obj = {12,13};
您也可以声明指向它的指针,如:
struct example* myPtr = &obj;
int new_variable = myPtr->a;
然后使用该指针访问数据成员。我希望这可以解决你的问题。