struct a {
int *val;
};
void main(){
int n;
struct a *a1;
a1= malloc(sizeof(a1));
n=10;
a1->val = &n;
func(a1);
printf("After changing %d\n",a1->val);
}
void func(struct a *a2){
int a = 5;
a2->val = &a;
a2->val = 0 ;
}
ローカル変数をメンバー構造体ポインターに割り当てました。そして最後にそれをnullにします。nullポインタを与える代わりに、それにアクセスしようとすると0を与えます。