구조체 포인터

김민수·2025년 1월 8일

C++

목록 보기
29/68

구조체 변수의 주소를 가리키는 포인터이다. 이를 통해 구조체의 멤버에 접근하거나 구조체 데이터를 동적으로 관리할 수 있음


1. 구조체 포인터 선언

struct MyStruct {
    int x;
    int y;
};

MyStruct s;          // 구조체 변수 선언
MyStruct* ptr = &s;  // 구조체 포인터 선언 및 초기화


2. 구조체 포인터를 사용한 멤버 접근

구조체 포인터를 통해 멤버에 접근할 때는 ->(화살표 연산자)를 사용하거나 (*구조체 포인터명).구조체 멤버 변수 형식으로 선언함

struct MyStruct {
    int x;
    int y;
};

int main() {
    MyStruct s = {10, 20};
    MyStruct* ptr = &s;

    cout << "x: " << ptr->x << endl;
    cout << y: " << (*ptr).y << endl;

    return 0;
}

출력 결과:

x: 10, y: 20


3. 동적 메모리 할당과 구조체 포인터

구조체 포인터는 동적 메모리 할당과 함께 자주 사용된다. 왜냐하면 유연한 메모리 관리와 효율적인 데이터 구조 설계를 가능하게 하기 때문이다.

struct MyStruct {
    int x;
    int y;
};

int main() {
    MyStruct* ptr = new MyStruct; // 구조체 동적 메모리 할당

    ptr->x = 30;
    ptr->y = 40;

    cout << "x: " << ptr->x << ", y: " << ptr->y << endl;

    delete ptr; // 동적 메모리 해제
    return 0;
}
  • 위 예제처럼 구조체의 데이터를 다룰 때, 구조체의 크기와 개수가 미리 정해져 있지 않다면 동적 메모리를 사용해야 함
  • 특히 복잡한 구조에서 유용함
profile
안녕하세요

0개의 댓글