【发布时间】:2020-11-05 23:39:21
【问题描述】:
我在一个结构中定义了 5 个浮点数:struct as {float a1, a2, a3, a4, a5;}; 我想使用单个指针 float* p_a = &a1; 访问这 5 个浮点数,然后只使用 p_a++ 等。它会工作吗?转换为数组 float a[5] 需要我想避免的重大更改。
【问题讨论】:
-
如何将结构更改为具有数组的
union和 5 个成员?应该由标准明确定义的 IIRC(尽管我不确定 struct padding 是否会与此混淆) -
它在技术上可以工作依赖于实现,因为它将成员存储在结构中。我不知道这是否违反了任何标准条款。
-
This 可能有用。
-
@pmg
p_a + 4导致未定义的行为(指针运算只能发生在数组的边界内,为此目的,标量计为大小为 1 的数组) -
就在我认为再也没有棘手的(愚蠢的?)C 指针问题的时候......