1

私は疑問に思っていました、なぜですか:

*some_var++;

同じことをしないでください:

*some_var = *some_var + 1;

... 2番目の例では、<*>間接参照演算子が2つの異なる目的で使用されているためですか?

*some_var = *some_var + 1;

つまり、 * some_varの最初のインスタンスは&some_varの内容を設定しているのに対し、 * some_varの2番目のインスタンスは&some_varの現在の内容を呼び出していますか?...それはCが次のステートメントで区別できないことです:* some_var ++;

さらに、次のことを行います。

*some_var++;

何かをします、もしそうなら、何ですか?!

ご入力いただきありがとうございます...おそらく些細なことですが、それでも私は興味があります。

4

2 に答える 2

7
*some_var++;

と同等です

*(some_var++);

と同等ではありません:

(*some_var)++;

++*接尾辞演算子は単項演算子よりも優先されます。

ちなみに、*ステートメントでは演算子の値を使用しないため、*some_var++;ステートメントも同等です(オブジェクトへのポインターではないとsome_var++;仮定)。some_varvolatile

于 2013-01-06T21:37:54.330 に答える
0

次の例を参照してください。

ex: 1

int main()
{
  char *ptr = "stackoverflow";
  *ptr++;
  printf ("%s\n", ptr);//this will print "tackoverflow" i.e pointr is incremented.
  return 0;
}

ex:2

int main()
{
   char *ptr = "stackoverflow";
   *ptr = *ptr + 1;// here you are trying to assing incremented content to *ptr, but this will give you error because string literal "stackoverflow" is stored in the read only memory so you can't modify .
}
于 2013-01-07T07:46:26.203 に答える