본문 바로가기

C++

[C++] 구조체

#include <stdio.h> // standard input output library -> stdio

// 사용자 정의 자료형 (User Define DataType)
typedef struct _tagMyST
{
	int	a;
	float	f;
}MYST;

typedef struct _tagBig {
	MYST	k;
	int	i;
	char	c;
}BIG;

typedef int INT;

struct NewStruct
{
	int	a;
	char	c;
};

int main()
{
	int arr[10] = { 1, 2, 3, 4 };

	// 구조체
	MYST t = { };
	t.a = 10;
	t.f = 10.1232f;

	int iSize = sizeof(t);

	struct NewStruct ns;

	INT a;

	return 0;
}

구조체란 나만의 자료형을 만드는 것이라고 합니다.

문법에서 제공하는 자료형을 묶어서 만들 수도 있고 제가 지정한 구조체를 가지는 구조체도 만들 수 있습니다.

 

일단 학습을 위해 C 스타일로 알아 봅시다.

 

typedef 

자료형을 재 정의 해주는 것입니다. typedef int INT에서 int 자료형의 타입 이름을  INT로 재정의 해서 사용할 수 있는것을 확인 할 수 있습니다.

 

C에서는 구조체를 사용 하기 위해서는 struct를 명시해 주어야 합니다. 사용할때 마다 struct를 명시해주기 귀찮기 때문에 typdef를 활용하여 귀찮음을 덜어 줍니다.

 

그러나 C++에서는 이를 생략할 수 있지만 C에서도 사용할 수 있도록 범용적인 목적으로 typedef를 사용해 줍니다.

 

배열의 초기화에서

int arr[10] = { };

이렇게 작성하면 모든 아이템에 제로 메모리를 할당하고

위의 이미지처럼 정의 하면 나머지 부분에 제로 메모리를 할당해 줍니다. 이 기능 또한 구조체에서도 활용 할 수 있습니다.