gpt4 book ai didi

C - 结构和用户变量共享相同的内存 - 可能吗?

转载 作者:行者123 更新时间:2023-11-30 16:08:18 25 4
gpt4 key购买 nike

很抱歉 C 语言中的新手问题。我有以下问题。

假设我的结构为:

struct foo {
char var_a;
char var_b;
char var_c;
};

以及变量列表:

foo j;
char a, b, c;

我想确保,在所有时刻,j.var_a 都等于 a,j.var_b 等于 b,j.var_c 等于 c。例如,我希望结构成员也可以像普通用户变量一样随时访问。我认为结构成员只需要与定义的用户变量共享相同的内存位置,因此假设必须将其中的某些内容定义为指针并尝试这样做:

foo *j;
char a, b, c;

在 main() 函数中:

j = &a;

目的是将结构体指针的地址分配给a的地址,并假设a、b、c将位于相邻的内存空间中。但是编译器显然会抛出错误,因为我无法将一种类型的指针指向另一种类型的地址。我也觉得这是不安全的,因为它与内存中变量的顺序有关。

那么有没有一种安全的方法可以实现这个目标,而无需每次更改任何变量时都手动重新分配和额外的内存复制?我有一个嵌入式目标,因此希望节省内存和处理器时间。

最佳答案

您是对的,由于您给出的原因,j = &a 不会执行您所期望的操作。

您可以做的是将 struct foo 的成员定义为指针:

struct foo {
char *var_a;
char *var_b;
char *var_c;
};

char a, b, c;
foo j = { &a, &b, &c };

关于C - 结构和用户变量共享相同的内存 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59380716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com