>  기사  >  백엔드 개발  >  C++ 구문의 혼란스러운 개념 분석

C++ 구문의 혼란스러운 개념 분석

WBOY
WBOY원래의
2024-06-01 21:13:00673검색

혼동 개념 분석: 포인터와 참조: 포인터는 변수 주소를 저장하고 참조는 변수를 직접 가리킵니다. 값별 전달 및 참조별 전달: 복사본은 값으로 전달되고 참조는 참조로 전달됩니다. 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. 값으로 전달 vs. 참조로 전달

  • 값으로 전달은 함수 매개변수의 복사본을 함수에 전달합니다.
  • 참조에 의한 전달은 함수 매개변수의 참조를 함수에 전달합니다.

예:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.