(1) 구조체
: 각 원소의 타입이 제각각인 배열의 모임.

구조체 정의
: 특정 이름으로 여러개의 변수/배열을 포함한 구조체를 생성.

  struct 구조체이름
  {     자료형타입  멤버변수;
  };

ex) Group이란 구조체에 music, study 멤버변수 정의
  struct Group
  {
      int music;
      int study;
  }


구조체변수 선언
: 정의된 구조체를 사용하기 위해 구조체 변수를 선언하여 새로운 메모리를 할당

  struct 구조체이름 구조체변수;

ex) Group 구조체를 사용하기 위해 mygroup으로 선언

  struct Group mygroup;
 
구조체의 멤버변수 참조
: dot 연산자를 사용하여 선언 된 구조체변수의 멤버변수를 직접접근

  구조체변수.멤버변수 ( . 연산자를 통해 접근 )

ex) mygroup으로 접근하여 study라는 멤버변수에 50이란 값 쓰기
  mygroup.study = 50;


(2) 구조체포인터
: 선언된 구조체의 주소를 사용하여 멤버변수를 참조.


구조체 포인터변수 선언
: 선언된 구조체를 참조하기위해 포인터 변수 선언

  struct 구조체이름 *포인터변수;

ex) Group 구조체를 사용하기 위해 포인터변수 beloved 선언

  struct Group *beloved;

구조체 포인터변수 초기화
: 구조체를 참조하기위해 선언된 포인터 변수를 참조하기위한 구조체변수의 주소로 초기화

  구조체 포인터변수 = &구조체변수;

ex) mygroup 구조체를 참조하기위해 포인터변수 beloved를 mygroup의 주소값으로 초기화
  beloved = &mygroup;

구조체의 멤버변수 참조
: -> 연산자를 사용하여 구조체의 주소를 참조 / 멤버변수에 간접접근
  포인터변수->멤버변수 ( -> 연산자를 통해 접근 )

ex) beloved 로 접근하여 study라는 멤버변수에 60이란 값 쓰기
  beloved->study = 60;



(3) 구조체와 구조체 포인터 예제 소스

○ Source


- price라는 구조체 변수를 선언하고 '.' 연산자를 통해 멤버변수에 접근하여 값을 저장한다.

- 선언된 price라는 구조체 변수의 주소값을 point함수에 넘겨준다.
- *cost라는 구조체 포인터변수를 선언하고, 넘겨받은 Data(price)로 초기화 한다.
- '->' 연산자를 통해 price 구조체의 주소로 멤버변수에 접근하여 값을 재변경한다.
※ cost->coffee 와 (*cost).coffee 는 같은 표현이다.


=> 구조체변수를 통한 직접 접근과 포인터 변수를 통한 간접 접근이 가능하다.

○ Compile & Result



by 민트앤라떼 2012. 3. 7. 15:16