ホームページ >バックエンド開発 >C++ >C言語のアプリケーションシナリオと*と&の違いをマスターする

C言語のアプリケーションシナリオと*と&の違いをマスターする

WBOY
WBOYオリジナル
2024-04-03 16:54:02830ブラウズ

ポインタ (*) は変数アドレスを格納し、変数値にアクセスして変更するために使用されます。アドレス演算子 (&) は変数のアドレスを取得します。変数はポインターに割り当てたり、関数に渡したりすることができます。違いは、ポインターは逆参照できるのに対し、アドレス演算子自体は変数値にアクセスできないことです。

C言語のアプリケーションシナリオと*と&の違いをマスターする

C 言語におけるアプリケーション シナリオとポインタ (*) とアドレス演算子 (&) の違い

ポインタ ( *)

  • 宣言:
  • 記号の後に変数名を使用します。
  • 関数:
  • 変数のアドレスを保存します
  • 目的:

    • 変数の値にアクセスして変更します (逆参照によって)
    • 変数を渡す アドレス (関数のパラメータとして)
    • #動的メモリ割り当ての実装

アドレス演算子 (&)

  • 宣言: 変数名の前に & シンボルを使用します。
  • 関数: Get変数のアドレス
  • 目的:

    • 変数のアドレスをポインタに代入
    • 変数のアドレスを渡します。変数 (関数パラメータとして)

違い

  • ポインタは変数のアドレスを指しますが、 address 演算子は変数のアドレスを取得します。
  • ポインタを逆参照して変数の値にアクセスして変更することはできますが、アドレス演算子自体は変数の値にアクセスできません。

実際的なケース

次のコード例は、C 言語でのポインター演算子とアドレス演算子の使用を示しています。

#include <stdio.h>

int main() {
    int x = 10;

    // 获取 x 的地址并将其赋值给指针 p
    int *p = &x;

    // 使用解引用运算符 * 访问和修改 x 的值
    *p += 5;

    // 打印修改后的 x 值
    printf("x: %d\n", x); // 输出:15

    // 传递 p 指针作为函数的参数
    myFunction(p);

    return 0;
}

void myFunction(int *ptr) {
    // 修改指向值的变量
    *ptr = 20;
}

この例では、中:

  • #*p ポインタ p を逆参照し、ポイントされた変数 x にアクセスします。
  • 関数 myFunction は、x p へのポインターを受け取り、*ptr を通じて x の値を変更します。

以上がC言語のアプリケーションシナリオと*と&の違いをマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。