2017-08-10 69 views
-1

我目前正在尝试遍历C++中的struct var。我有一个结构变量,但我需要访问结构的特定元素。C++通过递增指针逐位遍历低谷结构

someStruct { 
    int a; 
    int b; 
    bool c; 
    ... 
}; 

& someStructVar + 1将由结构的大小增加内存。但是我需要一个接一个地增加内存地址。有没有人有一个想法,如果这是可能的?还有其他方法吗?

+2

使用指针对这样的元素进行迭代是灾难的秘诀。你确定你知道他们是如何被包装进这个结构的吗?你确定知道使用什么填充来使它们正确对齐? – tadman

+0

C中最小的可寻址单元是字节,而不是位,所以你不能这样做。 – dasblinkenlight

+0

@dasblinkenlight,这不是唯一的问题:) – SergeyA

回答

0

你要求的是反射,其中C不支持。您无法获得struct的字段列表并遍历它们。

您需要按名称明确调出每个字段。

+0

这是一个C++问题,而不是C,但同样的事情适用。 – tadman

-1

你不能通过指针算法“迭代”结构体的成员,这在C++中是不允许的。

您可以迭代指针arithemtics的唯一方法是C风格的数组。