繁体   English   中英

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

[英]How to initialize an int pointer inside a struct assingning it to an array in C?

我有一个结构要说:

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];
}

这可能吗?

struct mystruct {
       int *myarray;
}

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

您有两种选择:

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

    instance->myarray = array;

  2. 保留内存并存储数据

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

你可以尝试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));

考虑:

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'}}};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM