7.1. 프로그램언어 C++에서의 포인터의 사용법

프로그램언어 C++의 포인터 선언과 초기화

프로그램언어 C++에서 포인터는 다른 변수의 메모리 주소를 저장하는 변수입니다. 포인터를 선언하고 초기화하는 방법은 다음과 같습니다.

포인터 선언:

int* ptr; // int형 포인터 ptr 선언
double* ptr2; // double형 포인터 ptr2 선언
char* ptr3; // char형 포인터 ptr3 선언

포인터 초기화:

int num = 10;
int* ptr = # // num 변수의 주소를 ptr에 저장

double value = 3.14;
double* ptr2 = &value; // value 변수의 주소를 ptr2에 저장

포인터를 선언할 때 ‘*’ 기호를 사용하여 포인터임을 나타내고, 변수명 뒤에 데이터 형식을 적어줍니다. 포인터를 초기화할 때는 ‘&’ 연산자를 사용하여 변수의 주소를 얻어와 포인터에 저장합니다.

프로그램언어 C++에서의 포인터 참조와 역참조

프로그램언어 C++에서 포인터는 메모리 주소를 저장하는 변수로 사용됩니다. 포인터 참조는 포인터 변수가 가리키는 메모리 주소에 저장된 값을 가져오는 것을 의미하며, 역참조는 포인터 변수 자체가 아닌 해당 주소에 저장된 값을 변경하거나 사용하는 것을 의미합니다.

포인터 참조는 포인터 변수를 사용하여 해당 주소에 저장된 값을 가져오는 것을 말합니다. 이는 포인터 변수 앞에 ‘*’ 연산자를 사용하여 수행됩니다. 역참조는 포인터 변수가 가리키는 주소에 저장된 값을 변경하거나 사용하는 것을 의미합니다. 이는 포인터 변수 뒤에 ‘*’ 연산자를 사용하여 해당 주소에 접근하여 값을 변경하거나 사용합니다.

아래는 C++에서 포인터 참조와 역참조의 예제 코드입니다.


#include <iostream>

int main() {
    int num = 10;
    int* ptr = # // 포인터 변수 ptr에 num의 주소를 저장

    // 포인터 참조
    int value = *ptr; // ptr이 가리키는 주소에 저장된 값을 가져옴
    std::cout << "Value using pointer reference: " << value << std::endl;

    // 역참조
    *ptr = 20; // ptr이 가리키는 주소에 20을 저장
    std::cout << "Updated value of num: " << num << std::endl;

    return 0;
}

프로그램언어 C++의 포인터로 배열 접근하기

프로그램언어 C++에서 포인터를 사용하여 배열에 접근하는 방법에 대해 알아보겠습니다.

배열은 연속적인 메모리 공간에 저장된 데이터 요소의 집합입니다. 포인터는 메모리 주소를 저장하는 변수로, 배열의 첫 번째 요소의 주소를 가리키는 포인터를 사용하여 배열에 접근할 수 있습니다.

예를 들어, 정수형 배열을 선언하고 포인터를 사용하여 배열에 접근하는 방법을 살펴보겠습니다.


#include <iostream>

int main() {
    int arr[5] = {10, 20, 30, 40, 50};
    int *ptr = arr; // 배열의 첫 번째 요소를 가리키는 포인터

    // 배열 요소에 접근하여 출력
    for(int i = 0; i < 5; i++) {
        std::cout << "arr[" << i << "] = " << *(ptr + i) << std::endl;
    }

    return 0;
}

위 예제 코드에서는 정수형 배열 ‘arr’을 선언하고, 포인터 ‘ptr’을 사용하여 배열에 접근하고 각 요소를 출력합니다. 포인터를 이용하여 배열에 접근할 때는 포인터 산술을 사용하여 각 요소의 주소에 접근할 수 있습니다.

프로그램언어 C++의 void 포인터 사용법

C++의 void 포인터는 어떤 데이터 타입의 주소를 가리키는 포인터이지만, 그 데이터 타입을 명시적으로 지정하지 않는 포인터입니다. 이는 어떤 종류의 데이터도 가리킬 수 있어 다양한 용도로 활용됩니다.

void 포인터를 사용할 때는 주의해야 합니다. void 포인터는 자체적으로는 역참조할 수 없기 때문에 다른 데이터 타입으로 형변환을 해주어야 합니다. 이를 통해 해당 주소에 저장된 데이터를 읽거나 쓸 수 있습니다.

아래는 void 포인터의 사용 예제 코드입니다.


#include <iostream>

int main() {
    int num = 10;
    void* ptr = # // void 포인터에 int 변수의 주소를 저장

    // void 포인터를 int 포인터로 형변환하여 값을 출력
    int* intPtr = static_cast<int*>(ptr);
    std::cout << "Value of num: " << *intPtr << std::endl;

    return 0;
}

프로그램언어 C++에서의 포인터와 함수

프로그램언어 C++에서 포인터는 변수의 메모리 주소를 저장하는 변수로, 다른 변수의 주소를 가리키는 역할을 합니다. 포인터를 사용하면 메모리를 효율적으로 활용하고, 변수의 값을 직접 조작할 수 있습니다.

함수는 프로그램에서 특정 작업을 수행하는 코드 블록을 의미하며, 재사용성과 모듈화를 위해 사용됩니다. 함수는 입력값을 받아 처리하고, 결과를 반환할 수 있습니다.

포인터와 함수를 함께 사용하면, 함수가 메모리 주소를 통해 직접 변수의 값을 변경할 수 있습니다. 이는 함수 호출 시 매개변수로 포인터를 전달하여 변수를 참조하는 방식으로 구현됩니다.


#include <iostream>
using namespace std;

// 포인터를 이용한 함수에서 변수 값 변경 예제
void changeValue(int* ptr) {
    *ptr = 100; // 포인터가 가리키는 변수의 값을 100으로 변경
}

int main() {
    int num = 50;
    int* ptr = # // 포인터 ptr이 num 변수를 가리킴

    cout << "변경 전: " << num << endl;
    changeValue(ptr); // 함수 호출 시 포인터 전달
    cout << "변경 후: " << num << endl;

    return 0;
}

Leave a Comment