[2022.06.26] 자료구조- C 구조체

REASON·2022년 6월 26일
0

자료구조

목록 보기
4/15
post-thumbnail

구조체

  • 구조체란 서로 다른 자료형의 데이터를 하나의 그룹으로 묶은 자료형을 의미한다.
  • C언어의 기본 타입을 가지고 새롭게 정의 한다고 하여 사용자 정의 타입이라고도 한다.
  • 기본 타입만 가지고 나타내기 어려운 자료를 나타낼 때 사용한다.

예를 들어, 학생이라는 구조체가 있다고 가정해보자.
이름(name), 입학년도(year), 성적(score) 속성을 가지고 있고 각각은 문자, 정수, 실수 자료형을 가진다.

struct student {
	char name[20+1]; // +1은 NULL 문자
    int year;
    float score;
};

구조체 초기화와 값 설정

방법 1 : 선언과 동시에 구조체 초기화

struct student student_lee = {
	"lee", 2008, 95.4
};

배열의 초기화 같은 방법으로도 구조체 변수를 초기화 할 수 있는데 구조체 멤버 변수가 정의된 순서에 따라 차례대로 초깃값을 적어주어야 한다.

방법 1-2

struct student lee_src = {
		.name = "lee", 
		.year = 2008, 
		.score = 95.4
};

중괄호 안에 구조체의 속성을 차례대로 기입해주면 된다.
구조체 멤버가 정의된 순서와는 상관이 없다.

방법2 : 선언한 이후 변수에 값 대입을 통해 설정

struct student student_lee = {0};
strcpy(student_lee.name, "lee");
student_lee.year = 2008;
student_lee.score = 95.4;

구조체의 속성을 지칭하기 위해 .을 찍어 사용했다.

구조체 변수 복사

직접 대입하는 방법

struct student lee_src = {
	"lee", 2008, 95.4
};

struct student lee_dest = {0, };
lee_dest = lee_src;

c컴파일러가 구조체의 크기를 알고 있기 때문에 값을 그대로 복사해서 사용할 수 있다.

typedef

tpyedef는 C언어에 이미 존재하는 타입에 새로운 이름을 붙일 때 사용한다. (새로운 구조체를 하나의 데이터 타입으로 재정의)
구조체 변수는 매번 struct 키워드를 사용하여 구조체임을 명시해야 하나 typedef 키워드를 사용하면 매번 struct 키워드를 명시하지 않아도 된다.

typedef stuct student_type{
	char name[20+1];
    int year;
    float score;
} student;

student lee_src = { "lee", 2009, 95.4 };

typedef로 선언한 student_type를 사용할 때
student만 작성해도 된다.


참고 자료
[자료구조] #05 2장 - 구조체/포인터
구조체의 기본

0개의 댓글