gpt4 book ai didi

c - C中元素的结构路径

转载 作者:行者123 更新时间:2023-11-30 15:48:12 27 4
gpt4 key购买 nike

嗨, friend 们,我是结构方面的新手。我正在尝试获取结构内部存在的元素的路径。例如:

如果我有:-

<小时/>
struct abc
{
struct def
{
struct lmn
{
int a1;
int a2;
int a3;
}lmn;

struct pqr
{
int b1;
int b2;
int b3;
}pqr;

}def;

}abc;

int *p_alphabet = &abc;
<小时/>

各个元素的路径就像

abc.def.lmn.a1;

abc.def.pqr.b1;

如果我有一个指针 p_alphabet,有什么方法可以获得每个元素的确切路径,并且可以将它们存储在一个数组中,这样我就不需要编写它们中的每一个(只需在如果我们在这些结构中定义了 1000 个这样的整数)。

最佳答案

C 中没有标准方法来迭代结构体的不同成员。所以像这样:

struct X {
int a1;
int a2;
int a3;
} x;

int *x_members[3];
for (m in x)
x_members[m_index] = &m;

不存在。您可以做的是让结构体本身保存数组。然后通过表示变量名称的常量对数组进行索引。这样做的限制是所有类型应该相同(或者说兼容)。例如:

enum X_members {
X_A1,
X_A2,
X_A3
};

struct X {
int members[3];
} x;

然后你可以拥有:

int *x_members[3];
for (i = 0; i < 3; ++i)
x_members[i] = &x.members[i];

或者直接使用这样的结构:

int xa1 = x.members[X_A1];

嵌套结构可能意味着嵌套数组,或使用适当的枚举名称(例如 X_STR1_STR2_A5)索引的一个数组。

关于c - C中元素的结构路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16898839/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com