c++ - 如何在不知道名称的情况下访问结构体成员?

标签 c++ c struct

我们如何在不知道结构体名称的情况下访问它的成员?

例如:这是我的结构。

struct A
{
   int a;
   char b;  
   int c;
 }

现在我想访问结构体 A 的 char 成员而不使用它的名称。

我只有一个指向该结构的指针。

示例:struct A *temp;

现在我需要使用“temp”进行访问。

我知道这个问题与此类似How would you access a C structure's members without knowing the name? , 但这并没有澄清我的疑问。

最佳答案

从评论中,我了解到您有以下功能

struct A;
void foo( struct A * temp )
{
    // access temp->b here
}

如果您可以包含具有结构 A 定义的文件,请这样做

#include "A.h"
void foo( struct A * temp )
{
    do_something_with_b(temp->b);
}

如果您无法包含该文件,请执行 Luc Forget 在其回答中建议的操作: 声明 struct B具有相同的结构,并类型转换tempstruct B 。因为struct B具有与 struct A 相同的内存布局,访问((struct B*)temp)->e与访问 A->b 相同.

关于c++ - 如何在不知道名称的情况下访问结构体成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31648904/

相关文章:

c - 未解析的外部符号 _sleep 使用 sleep()?

c - C中的结构初始化问题

c - 我的老师做了这个功能,但我不明白它有什么用

c - 如何在 C 结构中使用二维数组?

C++ - 解析具有多个定界符的 .text 文件,显示字符串

c - 在 C 中将 STDIN、STDOUT、STDERR 重定向到/dev/null

c++ - 以 [0.5, 0.5, 0.5] 为中心的盒子大小为 1 的模拟是否有缺陷?

c++ - 如何从 C/C++ 中的文本文件中读取一行?

c++ - 为什么 param_type 构造函数对于随机分布是显式的?

java - 使用 JNA 将 const char** 映射到 Java 类型