구조체 ( Struct ) Programming/C 2015. 8. 27. 10:10

구조체란 서로 관련있는 하나 이상의 변수들을 묶어 사용하는 것을 말합니다.

예를 들면 변수 중에 신원 정보를 파악할 수 있도록 이름, 나이, 성별등을 입력하는 변수들을 하나로

묶어 사용하는 것을 말합니다.

 


Ⅰ.  구조체 정의


 구조체를 정의 할때의 형식은 아래와 같은 형식으로 정의합니다.


struct identity{

    int age;

    char name[20];

    char gender[6];

};


identity란 구조체 명을 의미하고 안에 있는 변수들은 identity라는 구조체에 포함된 변수들입니다.

 



Ⅱ. 구조체의 선언



구조체를 선언하는 방식에는 여러가지의 방법들이 있습니다. 



struct identity{

    int age;

    char name[20];

    char gender[6];

} iden;




struct identity{

    int age;

    char name[20];

    char gender[6];

};

    struct identity iden;




struct identity{

    int age;

    char name[20];

    char gender[6];

};

typedef struct identity IDEN;

IDEN iden;




typedef struct identity{

    int age;

    char name[20];

    char gender[6];

}IDEN;

IDEN iden;



위와 같이 여러가지의 선언 방법이 있습니다.

③번과 ④번에 나온 typedef라는 것은 구조체 뿐만 아니라 다른 곳에서도 유용하게 널리쓰입니다.

 

typedef의 기능은 변수를 선언할 때 자료형의 이름을 사용자의 임의대로 바꿔줄 수 있습니다.

예를 들어 unsigned int * 와 같이 긴 자료형을 일일이 칠려면 귀찮기도 하고 불편합니다.

이때 typedef unsigned int* P_UNIT; 를 입력하여 unsigned int*을 P_UNIT로 

바꿔줄 수 있습니다. 


위와 같이 typedef를 사용하실 때에는 typedef (변경할 자료형)(변경후 자료형)형식으로 사용 합니다.





Ⅲ. 구조체 사용 


구조체를 사용할 때는 아래와 같이 사용 합니다.


#include <stdio.h>


struct identity{ // 구조체의 

    int age;

    char name[20];

    char gender[6];

} iden; // 구조체의 식별자


int main (void){

struct identity iden; // 구조체 변수의 선언

    printf("Name? : "); scanf("%s",iden.name); 

// 구조체를 사용할 때는 구조체 .변수  으로 사용

    printf("Age? : "); scanf("%d",&iden.age);

    printf("Gender? : "); scanf("%s",iden.gender);


 

}


의 주석에서의 설명과 같이 다른 함수내에서 사용하기 위해 구조체를 선언 해줍니다.

main 함수에서 iden.name 같은 형식은 구조체를 사용하기 위한 형식으로 (구조체 명.변수명)으로 

사용합니다.


★ 구조체를 사용하여 함수의 인자로 전달과 반환 대입연산은 가능하지만 사칙연산은 안됩니다. 




'Programming > C' 카테고리의 다른 글

[ Project ] Stack_Linked List  (0) 2015.08.27
연결 리스트 ( Linked List )  (0) 2015.08.27
Stack과 Queue  (0) 2015.08.26
Call-by-value 와 Call-by-reference  (0) 2015.08.26
2차원 배열  (0) 2015.08.26