본문 바로가기
Develop/C

19-2 C 언어의 구조체의 포인터 예제!

by 구운밤이다 2016. 8. 1.
728x90
반응형

2016/07/31 - [IT/C언어] - 19-1 C 언어의 구조체의 기초 예제!

이번 시간에는 구조체에 접근 할 수 있는 포인터 변수를 선언하는 방법에 대해 알아보도록 하겠습니다! 구조체 변수의 포인터 변수를 알아보기 전에! 구조체 변수의 주소 값의 특징에 대해 알아보도록 할게요! 구조체 변수의 주소 값은 그 구조체의 첫 번째 멤버의 주소 값과 똑같아요! 저번 시간 구조체를 예를 들자면 구조체 변수의 주소 값이 첫 멤버인 name의 주소값과 동일하다는 거죠! 이제 선언하는 법을 알아보도록 하겠습니다!

int num=4;

int *ptr = #

포인터 변수를 선언할 때 이렇게 선언했었죠! 구조체 변수의 포인터 변수도



struct pos pos1 = {"name", 5, 20};

struct pos *pptr = &pos1;

이렇게 선언하면 됩니다! 저번 시간에 배울 때 썼던 구조체 pos를 예로들어 봤는데요! 이렇게 포인터 변수를 선언할 수 있습니다! 이번엔 이렇게 선언해 놓은 포인터 변수에 접근하는 법을 알아보도록 하겠습니다!

strcpy((*pptr).name, "none");

(*pptr).xpos=10;

(*pptr).ypos=3;

이렇게 하면 됩니다! 하지만 밑에 두 개는 보통 이렇게 하지 않고

pptr->xpos=10;

pptr->ypos=3;

이렇게 해요! 이렇게 값의 저장이나 변경도 가능하지만 그냥 포인터 변수와 같이 연산도 가능합니다!

pptr->xpos += 1;

pptr->ypos -= 3;

이렇게 할 수 있다는 거죠! 그럼 x좌표는 1만큼 증가하고 y 좌표는 3만큼 감소하겠죠? 그리고 이런 포인터 변수는 구조체 안에서도 선언이 가능합니다! 

struct pos {

    char name[20];

    int xpos;

    int ypos;

    struct pos *ptr;

};

이거는 나중에 자료구조를 공부할 때 링크드리스트라고 있는데요! 그 때 자세히 배우게 됩니다!


모르는 것은 댓글이나 쪽지로 남겨주시면 성심 성의껏 답변해드리겠습니다!! 댓글공감구독(이웃추가)는 블로거에게 큰 힘이 됩니다! 부탁드리면서 이번 포스팅을 마치도록 하겠습니다! 지금까지 딘또였습니다

728x90
반응형

댓글