ホームページ > バックエンド開発 > C++ > C の `*ptr `、`* ptr`、` *ptr`、および `(*ptr) ` の違いは何ですか?

C の `*ptr `、`* ptr`、` *ptr`、および `(*ptr) ` の違いは何ですか?

Linda Hamilton
リリース: 2024-12-11 03:03:12
オリジナル
906 人が閲覧しました

What's the Difference Between `*ptr  `, `*  ptr`, `  *ptr`, and `(*ptr)  ` in C?

ポインター式: ptr 、 ptr 、および *ptr のナビゲート

これらのポインター式は、C プログラミングでよく使用されます。理解するのが難しい場合があります。詳細な説明は次のとおりです:

1. *ptr

  • 優先順位: * (間接) は (増分) よりも優先されます。
  • 式の値: を評価します前の ptr が指す値に
  • 副作用: ptr を 1 メモリ単位ずつ増分します。

例:

int a = 5;
int *ptr = &a;

*ptr++; // evaluates to 5, then increments ptr to point to the next integer
ログイン後にコピー

2. * ptr

  • 優先順位: (増分) と * (間接) の優先順位は同じです。
  • 式の値: を評価します。その後の ptr が指す値に
  • 副作用: ptr を 1 メモリ単位ずつ増分します。

例:

int a = 5;
int *ptr = &a;

*++ptr; // evaluates to 6 (a++) and increments ptr
ログイン後にコピー

3. *ptr

  • 優先順位: (増分) と * (間接) は同じ優先順位を持ちます。
  • 結合性: 右-左へ。
  • 式値: ptr が指す値をインクリメントします。
  • 副作用: なし。

例:

int a = 5;
int *ptr = &a;

++*ptr; // increments a to 6
ログイン後にコピー

4. (*ptr)

  • 優先順位: 括弧は優先順位ルールをオーバーライドします。
  • 式の値: で逆参照された値に評価されます。前にptr
  • 副作用: 逆参照された値をインクリメントします。

例:

int a = 5;
int *ptr = &a;

(*ptr)++; // evaluates to 5, then increments *ptr to 6
ログイン後にコピー

ptr , ptr および ptr がクラッシュする可能性がある一方、(ptr) は、ptr が文字列リテラルを指している場合にクラッシュする可能性があります。

以上がC の `*ptr `、`* ptr`、` *ptr`、および `(*ptr) ` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート