1. ホーム
  2. c

ポインタの指す int 値のインクリメント

2023-08-02 19:58:32

質問

私は int のポインタ(つまり int *count ) を使って、指されている整数をインクリメントしたいのです。 ++ 演算子を使うことで、指された整数をインクリメントしたい。と呼ぼうと思いました。

*count++;

しかし、ビルドの警告が表示されます。 式の結果が未使用です。 . 私はできる: 呼び出し

*count += 1;

しかし、私は、このような場合、どのように ++ 演算子も使いたいのです。何かアイデアはありますか?

どのように解決するのですか?

は * と同じ優先順位を持ち、連想順位は 右から左 . 参照 を参照してください。 さらに複雑になるのは、++が関連付けられるにも関わらず ポインタ に関連づけられるにもかかわらず、インクリメントはステートメントの評価後に適用されるため、さらに複雑になります。

物事が起こる順番は

  1. インクリメント後のポインタアドレス値を一時的に記憶する
  2. インクリメントされていないポインタ・アドレスをデリファレンスする。
  3. インクリメントされたポインタアドレスをcountに適用し、countはそのタイプのエンティティのために次に可能なメモリアドレスを指すようになります。

ステップ 2 で参照解除された値を実際には使用していないため、警告が表示されます。Sidarth が言うように、評価の順序を強制するために括弧が必要になります。

 (*ptr)++