如何初始化结构的int数组成员?

时间:2016-10-22 06:18:57

标签: arrays structure

struct node {int n; int k; int arr[n]};

编译前不知道数组n的大小。它是在执行期间从用户处获取的。

2 个答案:

答案 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);
}