본문 바로가기
Programming/자료구조

[자료구조] 07. 배열과 구조체

by happy_jinsu 2021. 10. 26.

배열 (Array)

같은 자료형의 변수를 여러 개 만드는 경우에 사용한다. (타입이 같은 데이터들을 하나로 묶는 방법.)

   ▷ 예시 : int list 1, list 2, list3, list4, list5, list6; → int list [6];

 

▶ 1차원 배열(One-Dimensional Array; Vector)

int value, list[6];  // 정수형 배열과 변수 선언

list[0] = 100;       // 배열 첫번째 원소에 값을 할당.(100 할당)

value = list[0];     // 배열 첫번째 원소의 값을 가져와 value 수에 할당. (value = 100)

1차원 배열

▶ 2차원 배열(Two-Dimensional Array; Matrix)

 int list[3][5];     //정수형 2차원 배열 선언

2차원 배열


구조체 (Structure)

다른 자료형의 변수를 여러 개 만드는 경우에 사용한다. (타입이 다른 데이터를 하나로 묶는 방법.)

▶ 구조체 선언

struct test {
       char name[10];   // 문자배열로 된 이름
       int studentNum;  // 학생 번호를 나타내는 정수값
       double gradeAvg;  // 평균평점을 나타내는 실수값
};

    ▷ test : 구조체 이름. 사용자가 정의한 새로운 자료형.

    ▷ name [10], studentNum, gradeAvg : 구조체 멤버.

 

▶구조체 변수 선언 & 구조체 사용

struct test T;   //구조체 변수 선언

strcpy(T.name, "SuJin");    //strcpy : 문자열 복사 (뒤에 있는 "SuJin"을 앞의 T.name에 복사.)
T.studentNum = 22;
T.gradeAvg = 4.3;

   ▷ T : 구조체 변수 선언. test 구조체를 사용할 때는 지정한 대로 test가 아닌 T로 사용.

   ▷ T.studentNum / T.gradeAvg : 구조체의 변수를 사용할 때는 < 구조체.구조체 멤버 > 형식으로 사용. 


▶ 구조체에서 typedef의 사용

typedef struct test{
         char name[10];
       	 int studentNum;
       	 double gradeAvg;
}Grade;  // 구조체 자료형은 관례적으로 대문자로 시작

   ▷ typedef : 기존 자료형에 새로운 이름을 부여하여, 복잡한 유형의 자료형 선언을 간단하게 처리할 수 있음.

   ▷ Grade : 새로운 데이터 타입. 구조체 자료형은 관례적으로 대문자로 시작.

Grade G; // struct test G 로 선언하지 않고 새로 만든 데이터 타입을 사용하여 바로 선언.

   ▷ G : 구조체 변수 ( G = Grade = struct test ) 

 

▶  구조체에서 typedef 활용 예시

#include <stdio.h>

typedef struct information{
        char name[10];
        int age;
        double height;
}Inform;

int main(void)
{
    Inform a = {"Lee", 22, 160.3};  
    Inform b = {"Seong", 27, 175.3};
    
    return 0;
}

참고 서적 : <C언어로 쉽게 풀어쓴 자료구조>, <윤성우의 열혈 C 프로그래밍>