如何初始化将结构体中的int指针关联到C中的数组?

时间:2019-02-15 10:27:26

标签: c arrays struct

我有一个结构要说:

struct mystruct {
       int *myarray;
}

在我的主要功能中,我想将预定义数组的值分配给“ myarray”。

int main(){
   int array[5] = {1,2,3,4,5};
   //how to "assign" array values to myarray ?;
}

我想避免像这样进行作业分配:

struct mystruct str = malloc(sizeof(mystruct));
for(int i = 0;i<size_of_array;i++){
    str->myarray[i] = array[i];
}

这可能吗?

3 个答案:

答案 0 :(得分:1)

struct mystruct {
       int *myarray;
}

此处myarray只是指向内存的指针。那里没有保留空间,因此您的示例将失败。

您有两个选择:

  1. 只需使用您已有的数组,这将假定在释放结构之前未释放数组:

    instance->myarray = array;

  2. 保留内存并存储数据

    instance->myarray = malloc(sizeof(int) * 5);
    memcpy(instance->myarray, array, sizeof(int) * 5);
    

答案 1 :(得分:0)

您可以尝试memcpy

struct->array = malloc(sizeof(some_array));
memcpy(struct->array, some_array, sizeof(some_array));

您的情况是

   str->array = malloc(sizeof(array));
   memcpy(str->array, array, sizeof(array));

答案 2 :(得分:0)

考虑:

typedef struct test
{
    int i;
    char c[2][5];
} test;

这可以使用以下方法初始化:

test t = {10, {{'a','b','c','d','\0'}, { 0 }}};
// or
test t = {10, {{'a','b','c','d','\0'}, {'x','y','z','v','\0'}}};