취미생활

[C++] 구조체로 여러 타입의 변수 묶어서 사용하기 본문

컴퓨터/C++

[C++] 구조체로 여러 타입의 변수 묶어서 사용하기

달다달아 2020. 7. 16. 03:14

구조체(Struct)는 Class가 없는 C언어 에서는 빛과 소금이었다.

 

여러 변수를 필요로 하는 함수에 입력을 할 때

구조체 하나만 사용한다면 단 하나의 인자로 여러 값을 바꿀 수 있다.

 

예시

function(int num, char *str, float pi, char val);

여러 변수를 호출 인자로 사용하는 함수 function이 있다고 생각해보자.

 

이 function을 호출하기 위해선 int, char 포인터, float, char 등 여러가지 변수를 사용해야 하기 때문에,

호출할 때 마다 실수하기 쉽다.

 

 

하지만, number 라는 구조체로 이를 묶어서 한 번에 관리한다면 어떨까?

function(number val);

구조체 하나만 인자로 사용하기 때문에 함수호출시, 어려움 없이 사용할 수 있다.

 

그렇다면 구조체는 어떻게 사용하는 걸까?

 

구조체 선언

struct name {
	int num;
	char str[10];
	float pi;
	char val;
};

구조체의 선언은 위와 같다.

 

struct를 이용해 구조체를 선언할 수 있으며,

name부분에 원하는 구조체의 이름을 쓰면 된다.

 

중괄호 안에는 구조체가 포함할 변수 타입을 선언해주면 된다.

 

 

 

구조체 사용하기

	Name a;
	a.num = 1;

Name이란 이름을 가진 구조체 a를 선언한 뒤,

a의 int형 변수 num에 1을 대입하는 코드다.

 

구조체 변수안에 있는 변수를 사용하기 위해서는

"."를 이용해 구조체의 변수임을 컴파일러에게 알려준다.

 

C++는 구조체 사용하기 참 편한 것 같다.

 

 

 

C에서는 구조체를 선언해서 사용할 시,

	struct name a;
	a.num;

struct를 구조체 이름 앞에 붙여줘야 했다.

이런 부분이 상당히 귀찮아서 Typedef를 이용해 새로운 데이터 타입을 정의해서 사용했지만,

C++는 그럴 필요가 없어졌다.

 

그냥 구조체 이름을 통해 선언할 수 있다.

 

이 얼마나 좋은 변화인가.

Comments