【发布时间】:2017-11-09 09:28:50
【问题描述】:
我试图通过引用将结构的成员传递给 c 中的函数,然后使用它来访问相同类型的结构的相同成员。
typedef struct Node
{
int a;
int b;
int c;
} Node;
Node mynode; //global
void pass_member(int *member){
mynode.&member = 1;//gives a compiler error
}
void main()
{
mynode.a = 0;
mynode.b = 45;
mynode.c = 64;
pass_member(&mynode.a)
}
我可以看到 mynode.&member 在 c 中是不允许的,但我认为它显示了我正在尝试做的事情
是否可以将结构成员的地址传递给 c 中的函数
,然后使用它来访问相同类型的结构中的该成员?
基本上我想要实现的是这样的功能
void set_member(int value_to_set, int * pointer_to_member_of_which_to_set);
这将根据函数的给定成员设置全局结构的特定成员。
【问题讨论】:
-
mynode.&member = 1;-->*member = 1; -
“我想要实现的是一个函数......它会根据给定的函数成员设置全局结构的特定成员”这是问题的根源。不要写这么傻的函数,这样的程序设计不好。特别是,使用与函数和调用者共享的全局变量是非常糟糕的。相反,只需在调用者中写入:
mynode.a = whatever;。 -
基本上,这里只有两个有效的程序设计案例。调用者知道结构的性质,然后调用者可以更改它。或者调用者不知道结构的性质 - 因为结构是私有封装的 - 在这种情况下,结构的成员与调用者无关。
-
点赞this