[C언어]10. 구조체

구조체

C언어의 기본 타입을 가지고 새로 정의할 수 있는 사용자 정의 타입


구조체는 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있다.
배열이 같은 타입의 변수 집합이라고 한다면, 구조체는 다양한 타입의 변수 집합을 하나의 타입으로 나타낸다.
이때 구조체를 구성하는 변수를 구조체의 멤버 또는 멤버 변수라고 칭한다.

 

예제

struct computer
{
    char cpu[25];
    char motherboard[30];
    int gpu;
} desktop;

 

 


typedef

설명1

이미 존재하는 타입에 새로운 이름을 붙일 때 사용한다.

구조체 변수를 선언하거나 사용할 때에는, 매번 struct 키워드를 사용하여 구조체임을 알려야 한다.
하지만 typedef를 이용하여 구조체에 새로운 이름을 선언(=지정)하면 매번 struct 키워드를 사용하지 않아도 된다.

 

설명2

typedef 예약어는 저장소 클래스 지정자 중 하나.

typedef는 Type Define의 약어로, '형식을 정의하라' 라는 뜻을 담고 있다.

 

구조체에 사용되는 struct는 형식 지정자에 포함되어있습니다.
struct는 형식을 지정해주는 것.

typedef는 형식을 정의해주는 것.

 

struct로 구조체를 만들면 하나의 형식을 만드는 것

typedef는 '형식을 지정해주는 것'


char, int 등의 자료형을 하나로 묶어서 'desktop 자료형이다라고 지정'

 

예제

#include <stdio.h>
typedef int Onething; //자료형 재정의

int main()
{
	Onething largeA; //재정의된 자료형 사용
	largeA = 10;
	printf("%d", largeA);
	return 0;
}

 

 

예제2 

 

typedef를 사용해서 구조체를 만들게 되면 구조체 변수를 만드는 것과 비슷하게 된다.
하지만 typedef를 사용해서 만들게 되면 구조체 변수가 아니라 재정의한 형식의 이름을 뜻하게 된다.

#include <stdio.h>

typedef struct computer
{
	char cpu[25];
	char motherboard[30];
	int gpu;
}Desktop;

int main()
{
	Desktop mine = {"i9-9999k", "BM-123", 1};
	
	printf("%s %s %d", mine.cpu, mine.motherboard, mine,gpu);
    //Desktop.cpu 이런 게 불가능 함
}

 

 

 

반응형

'프로그래밍 언어 > C' 카테고리의 다른 글

[C언어]11.공용체(union), 열거형(enum)  (0) 2023.12.15
[C언어]9. 포인터  (0) 2023.12.13
[C언어]8. 함수  (0) 2023.12.12
3.16 스터디 내용  (0) 2023.03.18
3.9 C스터디 과제  (0) 2023.03.15