오늘은 맑음

C언어 구조체와 포인터 멤버 참조 본문

Language/c, c++

C언어 구조체와 포인터 멤버 참조

자전거 타는 구구 2022. 4. 10. 00:44
반응형

 오늘은 여전히 헷갈리는 구조체와 구조체 포인터의 멤버 참조 방법에 대해 정리해보겠습니다.

 사실 헷갈리면 안되지만 간혹 명확하게 떠오르지 않네요. 

 앞으로 확실하게 기억하기 위해서 오늘 정리를 해보려고 합니다.

 

 C언어에서는 구조체를 사용할 때도 있고 구조체를 가리키는 포인터를 사용할 때도 있습니다.

 이 두가지 상황에서 각자 구조체의 멤버변수를 참조하는 방법이 다릅니다.

 

  • 구조체
    • 구조체는 멤버변수를 '.'를 통해 참조
  • 구조체 포인터
    • 구조체 포인터는 멤버변수를 '->'를 통해 참조

 

 먼저 아래와 같이 구조체와 구조체 포인터 모두 멤버변수를 '.'로 참조해보겠습니다.

포인터에서 멤버변수를 '.'으로 접근한 경우

 이렇게 참조한 후 컴파일을 하면 아래와 같이 메시지가 나옵니다.

컴파일 에러

 포인터이므로 '->'를 통해 참조하라는 에러가 나오네요. 정말 친절합니다.

 

이제 주석을 풀고 '->'로 참조를 하게 되면 정상적으로 컴파일이 되고 바이너리를 실행하면 아래처럼 출력됩니다.

출력 결과

오늘 이후로 헷갈리지 않길 바랍니다.

반응형
Comments