Code:
#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中的函數中這樣做,我會得到一個錯誤。我怎樣才能解決這個問題。我想在函數里面做。
編輯:謝謝你的回答。成功了
函數參數
它的局部變量,由傳遞的參數初始化,退出函數后不活動。
就是這個電話
未更改main中聲明的變量var2。
因此在這些聲明中
使用的未初始化指針
arr
具有調用未定義行為的不確定值。您需要通過引用將變量傳遞給函數。例如
這個函數叫做