C++ - 구조체

이강민·2023년 8월 20일

C++

목록 보기
8/22
post-thumbnail

구조체

구조체는 사용자 정의 자료형이다.

구조체를 선언하는 방법은 다음과 같다.

struct 구조체 명 {
	타입 변수명;
};

int main(){
	struct 구조체명 변수명;
	
    변수명.타입변수명;
    
	return 0;
};

main함수에서 구조체를 사용하려면 struct의 예약어를 사용해야 했는데 사용때마다 번거롭기 때문에 구조체변수명을 사용한다.

struct 구조체명{
	타입 변수명;
}구조체변수명;

int main(){
	구조체명 변수명;
	
    변수명.타입변수명;
    
	return 0;
};

C++은 개량되어 struct 예약어를 더이상 붙이지 않아도 된다.
그러나 간혹 C와 C++ 둘다 지원을 해야하는 경우가 생겨 다음과 같이 구조체를 작성해서 사용하기도 한다.

typedef struct 구조체명 {
	자료형 변수명;
}구조체변수명;
typedef struct _tagMyST {
	int a;
	float f;
}MySt;

int main(){

// cpp 이상부터는 _tagMyST t; 도 가능하다.
	MySt t;
	t.a = 10;
	t.f = 2.123f;
	return 0;
}

구조체의 크기

구조체는 해당 변수 중 가장 큰 타입의 크기로 설정된다.

typedef struct _tagMyST {
	int a = 0;
	float f = 0.0;
}MySt;

int main(){
int size = sizeof(MySt); // 8	
return 0;
}

구조체 중 4byte의 int형, 8byte의 float형이 있기 때문에 8byte로 할당된다.

구조체 합성

// 1번
typedef struct _tagMyST {
	int a = 0;
	float f = 0.0;
}MySt;


//2번
typedef struct _tagBig {
	MySt t;
	int i;
	char c; 
}MyBig;


//3번
//cpp에서 구조체
struct Stst {
	MyBig d;
	int i;
	char c;
}

1번 구조체는 float 8byte, 2번 구조체는 1번 구조체를 넣어서 float 8byte에 1번 구조체 8byte, 즉 16byte의 크기를 가진다.
3번 구조체는 1번, 2번 구조체를 가지고 있어 총 32byte를 가진다.

구조체 초기화

구조체가 가지는 변수를 초기화하여 값을 할당할 수 있다.

//구조체 선언, main함수 생략
Stst s = { 100, '0' };
profile
AllTimeDevelop

0개의 댓글