ポインターが指す内容を印刷したいと思います。これが私のコードです:
int main(){
int* pt = NULL;
*pt = 100;
printf("%d\n",*pt);
return 0;
}
これにより、セグメンテーション違反が発生します。なんで?
ポインターが指す内容を印刷したいと思います。これが私のコードです:
int main(){
int* pt = NULL;
*pt = 100;
printf("%d\n",*pt);
return 0;
}
これにより、セグメンテーション違反が発生します。なんで?
これらの行:
int* pt = NULL;
*pt = 100;
NULL
ポインターを逆参照している(つまり100
、アドレスのメモリーに値を格納しようとしているNULL
) ため、未定義の動作が発生します。試す:
int i = 0;
int *p = &i;
*p = 100;
アドレスNULLに書き込もうとしているからです。
試す:
int main(){
int val = 0;
int* pt = &val;
*pt = 100;
printf("%d\n",*pt);
return 0;
}