포인터와 참조

2025. 3. 28. 08:39Programming Languages/C++

포인터와 참조

포인터와 참조는 C++에서 메모리를 직접 다루고 효율적인 프로그래밍을 가능하게 하는 강력한 도구입니다. 이 챕터에서는 포인터와 참조의 기본 개념부터 고급 활용법까지 상세히 살펴보겠습니다.

6.1 메모리와 주소의 기본 개념

6.1.1 컴퓨터 메모리의 이해

컴퓨터 메모리는 데이터를 저장하는 일련의 바이트 모음입니다. 각 바이트는 고유한 주소를 가지고 있어 프로그램이 특정 메모리 위치에 접근할 수 있게 합니다.

|------|------|------|------|------|------|------|------|
| 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 |  <- 메모리 주소
|------|------|------|------|------|------|------|------|
|  42  |  65  |  0   |  0   |  13  |  0   |  0   |  0   |  <- 저장된 값(바이트)
|------|------|------|------|------|------|------|------|

6.1.2 변수와 메모리 주소

변수를 선언하면 컴파일러는 해당 변수에 대한 메모리 공간을 할당합니다:

#include <iostream>

int main() {
    int num = 42;
    
    std::cout << "변수 num의 값: " << num << std::endl;
    std::cout << "변수 num의 메모리 주소: " << &num << std::endl;
    
    double pi = 3.14159;
    
    std::cout << "변수 pi의 값: " << pi << std::endl;
    std::cout << "변수 pi의 메모리 주소: " << &pi << std::endl;
    
    return 0;
}

위 코드에서 & 연산자는 변수의 메모리 주소를 반환합니다. 이를 "주소 연산자"라고 합니다.

6.1.3 변수의 크기 이해하기

C++에서 다양한 데이터 타입은 다양한 크기의 메모리를 차지합니다:

#include <iostream>

int main() {
    std::cout << "char 크기: " << sizeof(char) << " 바이트" << std::endl;
    std::cout << "int 크기: " << sizeof(int) << " 바이트" << std::endl;
    std::cout << "float 크기: " << sizeof(float) << " 바이트" << std::endl;
    std::cout << "double 크기: " << sizeof(double) << " 바이트" << std::endl;
    
    int number = 42;
    std::cout << "변수 number 크기: " << sizeof(number) << " 바이트" << std::endl;
    
    int numbers[5] = {1, 2, 3, 4, 5};
    std::cout << "배열 numbers 크기: " << sizeof(numbers) << " 바이트" << std::endl;
    std::cout << "배열 요소 개수: " << sizeof(numbers) / sizeof(numbers[0]) << std::endl;
    
    return 0;
}

 

'Programming Languages > C++' 카테고리의 다른 글

동적 메모리 할당  (0) 2025.03.28
포인터의 기본  (0) 2025.03.28
챕터5. 실습 문제  (0) 2025.03.28
다형성(Polymorphism)  (0) 2025.03.28
상속(Inheritance)  (0) 2025.03.28