2

私は多くのチュートリアルを試しましたが、さらに混乱しました。だから、この初心者に最も簡単な答えを教えてください。可能であれば、質問に固執してください......私は情報過多に陥っています:)

まず主な機能

main(){
  int y=0;
  display(&y);
}

今関数

int display(int* x){
  //do something depending on different values of x
}

「変数が指定されていない場合、つまり、変数のアドレスが NULL の場合、関数は、指定された変数の値をゼロに設定します。」

今、私がする必要がある表示機能の私の理解

if (x==NULL)
   *x=0;

ここで私は立ち往生しています...... - display(NULL); で関数を呼び出す場合 Visual で次のエラーが発生します。「BTP 300 A1.exe の 0x00C84036 で未処理の例外: 0xC0000005: アクセス違反の書き込み場所 0x00000000.」

アドレスがnullの場合、関数からyに値を格納するにはどうすればよいですか?

または、質問が間違っているだけで、ポインター変数が指すアドレスに格納されている値が null である、つまり y=Null ??? である必要があります。

int* z が null ポインターの場合、z が指すアドレスの値と、指されているアドレスに格納されている値は何ですか???

4

2 に答える 2

0

次の 2 行は機能しません。

if (x==NULL)
*x=0;

禁止されている NULL を参照解除しようとしているためです。

あなたがしたいことは次のようなものです:

if (x==NULL)
    x = new int(0);
于 2013-09-29T09:39:21.463 に答える