|
|
1
3
最简单的方法是创建一个联合,其中一个部分单独包含每个成员,另一个部分包含一个数组。我不确定平台相关的填充是否会干扰对齐。 |
|
|
2
14
大多数尝试将联合与数组一起使用都容易失败。只要您只使用int,它们就有相当大的工作机会,但是对于其他类型(尤其是较小的类型),它们可能会非常频繁地失败,因为编译器可以(尤其是使用较小的类型)在
但是,C有一个
|
|
|
3
5
从语言的角度来看:不能。结构的数据成员不是…呃…在C语言中“可迭代”,不管它们是属于同一类型还是属于不同类型。 使用数组而不是一组独立成员。 |
|
|
4
2
还可以使用未命名的联合/结构:
这可能不适用于某些编译器,在本例中,您必须明确地命名内部的联合和结构。
|
|
|
5
1
正如您所说,您必须小心对齐和其他内存布局问题。你做这个应该很好
但我想问一下,这将使您的代码具有多大的可读性。 偶然地,
我不认为这会像你想象的那样,但我不完全确定你想要它做什么。使用
|
|
6
1
这是另一种方法;我从未有过这样做的理由,但它的优点是不破坏结构定义。创建指向感兴趣成员的指针数组,然后在该数组上迭代:
这样,您就不必担心对齐问题会咬到您,您可以任意地对想要迭代成员的方式进行排序(例如,您可以对其进行排序,因此漫游是“mem4、mem3、mem2、mem1”)。 |
|
|
7
0
您应该能够将foo指针转换为int指针。 一个更清洁的解决方案是如下声明foo。
然后迭代int数组。
您可以继续创建成员函数来访问和/或操作int数组。 |