c - 如何在结构体中初始化 int 指针并将其分配给 C 中的数组?

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

这可能吗?

最佳答案

struct mystruct {
       int *myarray;
}

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

您有两个选择:

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

    instance->myarray = array;

  2. 保留内存并memcpy数据

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

关于c - 如何在结构体中初始化 int 指针并将其分配给 C 中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54707291/

相关文章:

java - 如何对二维链表数组进行排序

C 二叉搜索树插入

c - Xcode 中的访问错误

c - 在curl_global_init调用上的SIGSEGV

c - 如何使用 OpenSSL 验证由 Jarsigner 创建的 *.SF/*.RSA 签名

c++ - 库无法正确导出功能

javascript - js中的多维数组打乱

gedit中c结构的自定义文本颜色

javascript - 以声明方式分配 javascript 数组属性

c - 找出C中查找表的大小