gpt4 book ai didi

c - 二维数组,其中每行都有不同类型的结构指针

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

如果我们有struct A及其实例A1A2A3struct B 包含实例 B1B2B3

是否有一个二维数组可以包含值的规定:

ARRAY[][]={{&A1, &A2},{&B1, &B2}}

这种方法容易出错吗?

最佳答案

您可以将其设为有效的 C 数组 void *。但您必须记住,为了取消引用指针,必须知道类型 那时。

void * ARRAY[][]={{&A1, &A2},{&B1, &B2}};

有效,但是您必须提供解引用时的类型

*(struct A *)ARRAY[0][0]

一种可能更易于人类阅读的方法是使用指向 union 的指针。但我不鼓励两者都使用,只使用两个数组。

union AandB {
struct A A;
struct B B;
};

// compiler will issue a warning if you don't typecast here
union AandB * ARRAY[][]={{(union AandB *)&A1, (union AandB *)&A2},{(union AandB *)&B1, (union AandB *)&B2}};

*ARRAY[0][0].A;
*ARRAY[1][0].B;

关于c - 二维数组,其中每行都有不同类型的结构指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20521783/

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