抱歉,我不熟悉c
我想编写一个函数,它将指针指向结构,并将哪个成员显示为参数......
我的目标是' in' python的运算符...就像我将传递要在结构数组上搜索的键和值并相应地返回
我尝试过一点,这就是我的意思...... 它的工作原理是解决这个问题吗?这很好或者风险很大,因为我们直接使用内存并且可能更容易做到这一点?
textBox.StringProperty = null;
答案 0 :(得分:0)
不,首先,您无法在定义期间为结构成员分配值,因为要为成员分配值需要具有该类型的实例(变量)。它不能是结构定义本身中的变量(成员)。
您已创建类型为DeviceEventEmitter
的变量Re
,现在您必须使用成员访问运算符structure Re
访问该结构的每个成员,并根据需要指定值。
那就是说,
.
对于托管环境至少应为int main()
。 答案 1 :(得分:0)
都能跟得上!使用您的方法无法实现此功能。
您在main
中看起来像结构成员(如x
),将被该函数视为另一个变量。
此外,相同的功能无法在C中返回多种类型的数据。
您可能想要了解C中的联盟。它们将更适合场景。
简介:
工会几乎就像结构一样,但在工会中,一次只能有一个成员活跃(或分配一个值)。它们可用作returntype(according to variable)
部分的替代。
另外,尝试自己阅读C(结构,函数等)的一些基础知识。你可以自己回答你的问题!
答案 2 :(得分:0)
你想要实现的目标不容易在C中完成。函数必须具有特定的声明返回类型;你不能拥有一个有时返回int的函数,有时候是一个char。
您可以使用union
作为返回类型。或者返回一个指向值(void *
)的无类型指针并将其强制转换为适当的类型。在任何一种情况下,调用函数的代码都需要使用结构成员的一些知识来编写,我认为这些代码首先要做到这一点。
对于函数体本身,您基本上需要使用case
语句或级联系列的if
语句并对每个可能的选项进行硬编码。同样,它不清楚你通过这样做获得了什么。
答案 3 :(得分:0)
使用enum可视化结构。现在你所要做的就是:
#include <stdio.h>
typedef enum {
x,
y,
a
} ReEnum;
typedef struct Re{
int x;
int y;
char a;
} Re;
int func(Re *r, ReEnum en)
{
switch(en) {
case x:
printf("x == %d\n", r->x);
break;
case y:
printf("y == %d\n", r->y);
break;
case a:
printf("c == %c\n", r->a);
break;
default:
return -1;
}
return 0;
}
int main(void)
{
Re r;
r.x = 5;
r.y = 10;
r.a = 'A';
func(&r,x);// should return int 5;
func(&r,y); //should return int 10
func(&r,a);// should return char 'A'
return 0;
}
答案 4 :(得分:0)
而不是常规功能使用宏
#define func(stru, el) ((stru)->el)
或 - 给出相同的结果
#define func(stru, el) ((*stru).el)