(C++) 4.7 구조체 struct 알기

이준우·2021년 10월 16일
0
post-custom-banner
#include<iostream>
#include<string>


using namespace std;

struct Person
{
	double height;
	float weight;
	int age;
	string name;

};


int main()
{
	Person me{20, 60, 20, "jun woo"};
	/*me.height = 20;
	me.weight = 60;
	me.age = 20;
	me.name = "jun woo";*/
	
	Person mom;
	Person dad;
	
	
	return 0;

}

struct를 사용하는 이유는 반복되는 것을 여러번 타이핑하여 만들지말고 간단하게 구현하자 라는 뜻이다. 배열을 사용해도 좋고 반복문을 사용해도 좋지만 여러번 만들어지는 것은 다르지 않다. 이를 하나의 구조체를 사용하면 여러개의 반복값을 반복적으로 사용할 수 있다.

또한, 코드를 보게 되면 uniform intialization으로 초기화 하는 것을 볼 수 있는데 uniform intialization으로 좀더 직관적이고 간결하게 사용하는 모습을 볼 수 있다.

#include<iostream>
#include<string>


using namespace std;

struct Person
{
	double height;
	float weight;
	int age;
	string name;

};


void printPreson(Person ps)
{
	cout << ps.height << " " << ps.weight << " " << ps.age << " " << ps.name << endl;
}

int main()
{
	Person me{20, 60, 20, "jun woo"};
	/*me.height = 20;
	me.weight = 60;
	me.age = 20;
	me.name = "jun woo";*/
	printPreson(me);

	Person mom;
	Person dad;
	
	
	return 0;

}

output : 20 60 20 jun woo

간단하게 사용자 출력을 하면 초기화된 값이 제대로 들어간 것을 알수 있다. 근데 지금까지 저 '.'의 역할이 무엇인지 알려주지 않았다. 도대체 온점의 역할은 무엇일까?

struct Person
{
	double height;
	float weight;
	int age;
	string name;

};

구조체를 보면 구조체 Person 안에 다양한 member들이 존재한다.member들이라 하면 height, weight, age, name등 다양하다. 이러한 member에 접근하기 위해서는 .을 사용하여 접근한다.

#include<iostream>
#include<string>


using namespace std;

struct Person
{
	double height;
	float weight;
	int age;
	string name;
	void printPreson()
	{
		cout << height << " " << weight << " " << age << " " << name << endl;
	}
};




int main()
{
	Person me{20, 60, 20, "jun woo"};
	/*me.height = 20;
	me.weight = 60;
	me.age = 20;
	me.name = "jun woo";*/
	me.printPreson();

	Person mom;
	Person dad;
	
	
	return 0;

}

구조체 안에 함수를 넣고 멤버 접근 연산자도 사용하지 않으며 출력하는 방법도 있다.

#include<iostream>
#include<string>


using namespace std;

struct Employee     //14 bytes
{
	short id;		//2bytes
	int age;		//4bytes
	double wage;	//8bytes
};


int main()
{
	
	Employee em1;

	cout << sizeof(em1) << endl;


	return 0;

}

output : 16

구조체 내부의 데이터 size를 보면 총 14 bytes이나 출력해보면 그렇지 않은 것을 알 수 있다. c++내부에서 데이터를 제대로 보관(?)하기 위해서 기본 4bytes로 갖고 있다고 해서 short에 2bytes를 더해 4bytes로 계산되는 것 같다.

profile
꿈꾸는 CV
post-custom-banner

0개의 댓글