ホームページ >バックエンド開発 >C++ >C++ 構文における混乱を招く概念の分析

C++ 構文における混乱を招く概念の分析

WBOY
WBOYオリジナル
2024-06-01 21:13:00706ブラウズ

混乱概念分析: ポインターと参照: ポインターは変数アドレスを格納し、参照は変数を直接指します。値渡しと参照渡し: コピーは値によって渡され、参照は参照によって渡されます。 const と constexpr: const は実行時定数、constexpr はコンパイル時定数です。 && および &: && および &&& は論理 AND 演算子であり、& は参照演算子です。

C++ 構文における混乱を招く概念の分析

C++ 構文における混乱を招く概念の分析

はじめに

C++ は強力なプログラミング言語ですが、その構文は時々混乱を招く可能性があります。この記事では、よく混同されがちな概念をいくつか取り上げ、それらを正しく使用する方法の例を示します。

1. ポインタと参照

  • ポインタは、別の変数のアドレスを格納する変数です。
  • 参照は、別の変数を直接指すエイリアスです。

例:

int x = 5;

int* ptr = &x; // ptr 指向 x
int& ref = x; // ref 是 x 的引用

cout << *ptr << endl; // 输出 5
cout << ref << endl; // 输出 5

2. 値渡しと参照渡し

  • 値渡しは、関数パラメーターのコピーを関数に渡します。
  • 参照渡しは、関数パラメータの参照を関数に渡します。

例:

void swap(int x, int y) {
  int temp = x;
  x = y;
  y = temp;
}

void swap_ref(int& x, int& y) {
  int temp = x;
  x = y;
  y = temp;
}

int main() {
  int a = 5, b = 10;

  cout << "Before swap:" << endl;
  cout << "a: " << a << ", b: " << b << endl;

  swap(a, b);

  cout << "After swap:" << endl;
  cout << "a: " << a << ", b: " << b << endl; // a 和 b 仍然为 5 和 10

  swap_ref(a, b);

  cout << "After swap_ref:" << endl;
  cout << "a: " << a << ", b: " << b << endl; // a 和 b 已交换为 10 和 5
}

3. const と constexpr

  • const は定数変数を宣言します (変更できません)。
  • constexpr は、コンパイル時に値が判明するコンパイル時定数を宣言します。

例:

const int x = 5; // x 是运行时常量
constexpr int y = 5 + 1; // y 在编译时已知,值为 6

int main() {
  // x 是常量,不可修改
  // x = 10; // 错误:无法修改常量

  // y 是编译时常量,无法修改
  // y = 10; // 错误:无法修改编译时常量
}

4. && と &

  • && は論理 AND 演算子です (ブール値を返します)。
  • & は参照演算子です。

例:

bool flag = true;

// 逻辑与运算
if (flag && (x > 0)) {
  // ...
}

// 引用运算符
int& ref = x; // ref 是 x 的引用

以上がC++ 構文における混乱を招く概念の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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