c - void* 指向结构?

标签 c arrays struct

我想创建一个 void* 1d 数组,每个单元格中的每个指针都指向我编写的结构(由于某些原因,它必须是 void* 数组,而不是 sturct 数组),所以到目前为止,我写了这个:

typedef struct
{
 int weight;
 int amount;

} Banana;

void* makeBanana(){
Banana new;
new.weight = 1;
new.amount = 6;

void* p = &new; //its Legal??
return p;

现在,在那之后,我想将这个 p 存储在一个动态的 void* 指针数组中,每个 void* 指针指向另一个 Banana,我这样写:

void* ptrToBananaArray  = (void*)malloc(3); //3 is just example of lenght
ptr[0] = makeBanana();

这样可以吗?如果不是,正确的方法是什么?


使用 void* 而不是 Banana* 的原因: 这是因为我在其他地方有一个通用代码,它只获得 void* 类型,所以这里是香蕉,但将来它还想获得番茄或洋葱或其他东西,所以它必须是 void*

最佳答案

返回指向函数内部创建的变量的指针是非法的,因为保存变量的内存不再是静态分配的,不同的变量可能会覆盖它。

关于c - void* 指向结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27343911/

相关文章:

c - 为什么函数参数列表中的函数指针可以省略 `(*)`?

c# - 需要帮助从小字节数组创建大数组

c - 使用 scanf 从一行中扫描多个输入

c++ - MPI派生的数据类型问题是由结构填充和无阻塞通信缓冲区的问题引起的

c - 如何递归打印结构数组?

与结构和指针混淆

c - 从目录中读取多个文件?

c - 使用源去除算法结果的拓扑排序未显示

Java Homework - 将计数存储到数组

javascript - 从数组转换为正确的对象格式