我想创建一个 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/