【发布时间】:2018-08-21 06:32:56
【问题描述】:
让我们有一个这样的结构:
struct _Example {
int a;
int b;
int c;
} Example;
一个函数通过指针获取这个结构并输出结构成员的值。我想像这样打印这些值:
Example example;
func(&example);
if(example.a)
printf("%d", example.a);
if(example.b)
printf("%d", example.b);
if(example.c)
printf("%d", example.c);
如何用循环替换那些多个if 条件?
【问题讨论】:
-
如果你有一个结构体与一个 3-int 数组的联合,你也许可以做到。但是你为什么要这样做呢?您不妨只使用一个数组开始。
-
你考虑过将结构体改成数组类型吗?请提供更多上下文来说明为什么这不是一个选项。
-
我认为您应该能够从
example所在的位置开始循环内存地址,然后以sizeof(int)的步长循环3次。您必须将结果转换为整数。我认为这个解决方案会相当笨拙且不可读。就可读性而言,这段代码没有任何意义。其他选项是使用union。 -
结构中只有几个字段,为什么要这样做?即使你可以循环,你也必须使用泛型,因为你不能用相同的格式说明符打印各种类型
-
@phuclv 你有很多理由想要做这样的事情。例如,通过某种协议发送数据之前的数据序列化。
标签: c