본문 바로가기
카테고리 없음

구조체 정리

by ByteBridge 2013. 2. 23.
반응형


구조체 정의 :

                  à 변수 선언 1번째

                  Struct[태그 이름]

                  {

                  구조체 멤버 선언;

                  }[변수 이름1],[변수 이름2];

                  à 변수 선언 2 번째

                   Struct [태그이름]

                  {

                  구초제 멤버 선언;

                  };

                  Struct[태그이름][변수이름1,],[변수이름2];

Typedef 이용한 구조체 정의

à자료형 예약어 (int,foat,double,char) 들처럼 사용자가 정의한 구조체도 심플하게 나타내기위함, 또는  사용자 정의 타입을 재정의 하기위하여 사용된다.

n   typedef [이미 정의된 내용]  [새로 정의해서 사용할 내용];

Ex: struct sam

                  {

                  Char Name[30];

                  Char ID[20];

                  };

                  Typedef struct sam SAM;

                  SAM Friend,Friend1;

n  언과 typedef 같이 사용하면 프로그램 코딩시 편리할뿐아니라 코드의 가독성 면에서도 좋음

그래서 구조체형 선언에서 구조체 태그 이름을 생략하고 재정의를 아래와같이 사용함

Typedef struct

{

구조체 멤버 선언;

}재정의 이름;

n  정의된 구조체형은 이후 재정의 이름으로 사용하게 된다.구조체형 선언은 하나의 함수안에서만 사용하기보다는 프로젝트 전반에 걸쳐 공통으로 사용하는 내용이다.따라서 헤더 파일에 선언해서 사용하면 더욱 편리함

à프로젝트가 커지거나 소스가 많아 지면 대부분 구조체는 헤더파일에 작성한다

구조체 배열과 포인터

n  구조체 배열은사용자정의한 구조체형 변수가 역속으로 할당된 형태이고,구조체 포인터는 해당 구조체형 변수의 주소를 저장하는것이다.

 

à구조체 배열

n  구조체 배열은 일반 배열 변수와 선언 형태가 같다 

Ex:

Typedef struct

{

Char name[30];

Char id[20];

}Std;

Std std01;

Std std arr[5];àStd 이고 5개의 크기를 갖는 배열 변수선언

à구조체 배열과 포인터

n  구조체 포인터도 일반 포인터 변수와 마찬가지로 구조체형 포인터 변수도 서로 자료형이 일치해야한다.구조체형 포인터 변수 선언과 사용은 일반 자료형 포인터 변수와 마찬가지이다.

n  주의 할점은 멤버 참조이다.멤버 참조시 간접 연산자를 사용해서 표시한다

형식:

(*구조체형 포인터 변수).멤버

Ex:typedef struct

{               

Char namel[30];

Char ID[20];

} Student;

Student a= {“홍길동”,”010,000,234”};

Student *pst;

Pst=&a;

a.name;

(*pst).name;

 

n  구조체형 포인터 변수에서 멤버 참조를 위해 별도의 포인터 변수의 멤버 참조 연산자가 제공된다.

n  형식: 구조체형 포인터 변수->멤버변수

기존의 구조체형 변수의 멤버 참조 연산자를 구조체형 포인터 변수에서 사용하려면 매번 간접 연산자와 중괄호를 표시해야하므로 번거롭기 때문에 구조체형 포인터 변수의 참조 연산자인 ‘->’ 많이 사용한다.

 

Ex:

Typedef struct

{

Char name[30];

Char ID[20];

} Std;

 

Std a ={“홍길동”,”010,000,234”};

Std *pstd ;

Pstd=&a;

a.       name;

pa->name;

pa->ID;

반응형