5

ポインターが指す内容を印刷したいと思います。これが私のコードです:

int main(){
    int* pt = NULL;
    *pt = 100;
    printf("%d\n",*pt);
    return 0;
}

これにより、セグメンテーション違反が発生します。なんで?

4

2 に答える 2

12

これらの行:

int* pt = NULL;
*pt = 100;

NULLポインターを逆参照している(つまり100、アドレスのメモリーに値を格納しようとしているNULL) ため、未定義の動作が発生します。試す:

int i = 0;
int *p = &i;
*p = 100;
于 2013-10-20T23:06:22.023 に答える
5

アドレスNULLに書き込もうとしているからです。

試す:

int main(){
    int val = 0;
    int* pt = &val;
    *pt = 100;
    printf("%d\n",*pt);
    return 0;
}
于 2013-10-20T23:06:03.117 に答える