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
My code is as above. I don't get any error when I do it manually as in var1. But if I do it inside a function as in var2, I get an error. How can I fix this. I want to do it inside the function.
EDIT:Thank you for your answers. It worked
Createhas its argument passed by value. CallingCreate(var2)does not modifyvar2in any way, what's passed is a copy. You probably wantCreateto take a pointer as an argument, or return a newexample.