struct node {int n; int k; int arr[n]};
编译前不知道数组n的大小。它是在执行期间从用户处获取的。
答案 0 :(得分:0)
您可以参考此代码,我不确定它是否可行,但您可以参考。
my_struct_t *myStruct;
size_t noOfElements;
size_t completeSize;
int index;
/* ...code which sets the number of elements at runtime... */
completeSize = sizeof(my_struct_t) * noOfElements;
myStruct = malloc(completeSize);
memset(myStruct, 0, completeSize);
/* ...and then access it as if it were an array...*/
myStruct[index].someInt = 10; // index < noOfElements
答案 1 :(得分:0)
内存不能在结构本身中分配,但是您可以在结构中定义指向数组的指针,然后您可以使用malloc或new()来分配内存,大小为'n'。
以下是定义结构的方法。
struct node {int n; int k; int *arr};
要分配内存,您可以使用结构对象执行此操作,如下所示
1)使用malloc:
fun() {
node obj;
obj.arr = (int*)malloc(sizeof(int)*obj.n);
}
2)使用new()
fun() {
node obj;
obj.arr = new int(obj.n);
}