我有一个结构要说:
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
只是一个指向内存的指针。那里没有保留空间,因此您的示例将失败。
您有两个选择:
只需使用已有的数组,这假设在释放结构之前该数组未释放:
instance->myarray = array;
保留内存并memcpy数据
instance->myarray = malloc(sizeof(int) * 5); memcpy(instance->myarray, array, sizeof(int) * 5);
关于c - 如何在结构体中初始化 int 指针并将其分配给 C 中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54707291/