好的,所以我有以下 C 代码:
//for malloc
#include <stdlib.h>
//to define the bool type
#if __STDC_VERSION__ >= 199901L
#include <stdbool.h>
#else
typedef int bool;
#endif
//define structs
typedef struct A{
int integerValue;
char characterValue;
} A;
typedef struct B{
float floatValue;
bool booleanValue;
} B;
int main(int argc, const char * argv[])
{
//allocate a void pointer array
void* myArray[3];
//fill the array with values of different struct types
myArray[0] = malloc(sizeof(A));
myArray[1] = malloc(sizeof(B));
myArray[2] = malloc(sizeof(A));
}
但我希望能够动态调整数组的大小。我知道您可以动态调整仅包含一种类型的数组的大小,如下所示:
int* myArray;
myArray = malloc(3*sizeof(int));
myArray[0] = 3;
myArray = realloc(myArray,4*sizeof(int));
printf("%i",myArray[0]);
但是在上面的情况下你将如何做到这一点(它需要能够处理几乎无限数量的类型)。用 重新分配数组会起作用realloc(myArray,newNumberOfIndices*sizeof(ElementWithBiggestSize))
,还是有更优雅的方法来实现这一点?