【发布时间】:2021-09-22 18:57:57
【问题描述】:
代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int *arr;
}example;
void Create(example var){
var.arr = (int *)malloc(sizeof(int)*2);
}
int main(){
example var1, var2;
var1.arr = (int *)malloc(sizeof(int)*2);
var1.arr[0] = 11;
var1.arr[1] = 22;
printf("%d %d\n",var1.arr[0],var1.arr[1]);
Create(var2);
var2.arr[0] = 111;
var2.arr[1] = 222;
printf("%d %d\n",var2.arr[0],var2.arr[1]);
return 0;
}
OUT:
11 22
Segmentation Fault
我的代码如上。当我像在 var1 中那样手动操作时,我没有收到任何错误。但是,如果我在 var2 中的函数内执行此操作,则会出现错误。我怎样才能解决这个问题。我想在函数内部做。
编辑:感谢您的回答。成功了
【问题讨论】:
-
Create的参数是按值传递的。调用Create(var2)不会以任何方式修改var2,传递的是一个副本。您可能希望Create将指针作为参数,或者返回一个新的example。
标签: arrays c pointers struct malloc