라벨이 C++인 게시물 표시

C++ 의 참조 개념

이미지
C++에서의 참조는 변수나 객체의 별칭을 제공하는 방법입니다. 참조를 사용하면 변수나 객체에 대한 간접적인 접근을 할 수 있습니다. 여기서 주요 포인트와 예제를 통해 C++의 참조 개념을 설명하겠습니다. 참조의 선언 : 참조는 & 기호를 사용하여 선언됩니다. 예를 들어, int 타입의 변수에 대한 참조는 다음과 같이 선언할 수 있습니다. int num = 10; int &ref = num; 참조의 특징 : 참조는 선언과 동시에 초기화되어야 합니다. 한번 초기화된 참조는 다른 변수나 객체를 참조하도록 변경할 수 없습니다. 참조는 NULL 값을 가질 수 없습니다. 참조와 포인터의 차이 : 포인터는 메모리 주소를 저장하는 반면, 참조는 별칭으로 작동하며 메모리 주소를 직접 저장하지 않습니다. 포인터는 * 와 & 연산자를 사용하여 역참조하고 주소를 얻는 반면, 참조는 추가적인 연산자 없이도 원래의 변수나 객체에 접근할 수 있습니다. 참조의 활용 : 함수의 인자로 사용될 때, 값을 복사하는 것이 아닌 원래의 변수나 객체에 대한 접근을 제공하므로 효율적입니다. 함수에서 여러 값을 반환할 필요가 있을 때 사용됩니다. 예제 : void swap(int &x, int &y) { int temp = x; x = y; y = temp; } int main() { int a = 5, b = 10; swap(a, b); cout << "a: " << a << ", b: " << b; // a: 10, b: 5 return 0; } 위의 예제에서 swap 함수는 참조를 인자로 받아 원래의 변수의 값을 직접 변경합니다. 이러한 참조의 개념은 C++에서 매우 중요하며, 효율적인 프로그래밍을 위해 잘 알아두어야 합니다.

C/C++ 포인터 기본 개념

이미지
  포인터는 C와 C++ 언어의 핵심 개념 중 하나입니다. 이를 이해하는 것은 두 언어를 효과적으로 사용하기 위해 필수적입니다. 포인터란? 포인터는 메모리 주소를 저장하는 변수입니다. 다시 말해, 포인터는 어떤 데이터의 위치(메모리 주소)를 가리키는 변수입니다. 기본 사용법: 선언 : c int *p; // 정수형 포인터 char *ch; // 문자형 포인터 주소 연산자 & : 변수의 메모리 주소를 가져오는 데 사용됩니다. c int x = 10 ; p = &x; // p는 x의 주소를 가리킵니다. 역참조 연산자 (*) : 포인터가 가리키는 주소의 값을 가져옵니다. c int value = *p; // value는 10이 됩니다. p가 x의 주소를 가리키기 때문입니다. 포인터의 이점: 동적 메모리 할당 : malloc() , calloc() , new 등의 함수나 연산자를 사용하여 실행 시간에 메모리를 할당할 수 있습니다. 배열과 문자열 : 포인터를 사용하여 배열의 요소에 접근하거나 문자열을 관리할 수 있습니다. 함수와 구조체로의 참조 전달 : 값 전달 대신 참조 전달을 사용하여 효율적으로 데이터를 전달하거나 변경할 수 있습니다. 데이터 구조 : 링크드 리스트, 트리, 그래프와 같은 고급 데이터 구조를 구현할 때 필수적입니다. 주의사항: 와일드 포인터 (Dangling Pointer) : 초기화되지 않은 포인터는 예측할 수 없는 메모리 주소를 가리키게 됩니다. 이러한 포인터를 역참조하면 프로그램에 오류가 발생할 수 있습니다. 메모리 누수 : 동적으로 할당된 메모리를 적절히 해제하지 않으면 메모리 누수가 발생할 수 있습니다. C에서는 free() , C++에서는 delete 를 사용하여 메모리를 해제해야 합니다. 포인터 연산 : 포인터에 정수를 더하거나 빼면 해당 타입의 크기만큼 주소가 변경됩니다. 이를 활용하여 배열의 요소에 접근할 수 있지만, 주의하지 않으면 포인터가 유효한 메모리 범위를 벗어날 수 있습니다. C++에서의...