그냥 구조체를 쓴다고 해 보자.
struct 구조{
    int 수;
    int 열;
};
이제, 구조체를 하나 정의하자.
struct 구조 아싸;
이래놓고서 아싸의 수를 참조하고 싶으면 다음과 같이 하면 된다는건 알려져 있다.
아싸.수
그런데, 구조체라고 포인터로 선언하지 말란 법은 없다. 이렇게 하면 된다
struct 구조 *메롱;
이러면 메롱은 구조라는 형태를 가진 변수를 가리키는 포인터가 된다. 그럼 메롱의 수를 참고하고 싶으면 어떻게 할까?
원래는 (*메롱).수라고 해야 한다. *메롱.수 라고 하면 안되는 이유는, 이건 *(메롱.수)로 해석되어버리기 때문이다. 즉, 메롱.수라는 포인터가 가리키는 곳으로 가버리기 때문에, 메롱이 가리키는 곳의 수로 가지를 않는다. 귀찮다. 그래서 새로운 연산자가 있다. 바로 ->이다.
메롱->수
라고 쓰면, 이것은 (*메롱).수와 동등하다.

자, 오늘도 신기한거 하나 배웠다.
by snowall 2007. 1. 30. 03:25
  • complexifier 2007.01.30 22:35 ADDR EDIT/DEL REPLY

    이거 정말 유용하다는... 특히 트리구조에서 +_+
    포인터 구조체 없으면 C를 안했을지도!

    • snowall 2007.01.30 23:13 신고 EDIT/DEL

      뭐...; 난 그냥 처음에 배운게 C고 어차피 쓸게 C고 그다지 나빠보이지도 않아서 그냥 C 쓰는 건데...;