18. 구조체

P4·2023년 6월 14일
0
post-thumbnail

구조체 (사용자 정의 자료형)

  • 현재 필기는 c문법 기반 (후에 c++과의 차이점을 설명)

  • 내가 내 맘대로 자료형을 만들고 싶다면? --> 구조체를 사용하면 됨
    (int랑 float을 묶어서 하나의 자료형으로 본거임)


사용법

#include <stdio.h>

typedef struct _tagMyST
{
	int a;
	float f;
}MYST;

int main(void) {

	MYST t{};
	t.a = 10;
	t.f = 123.45f;

	// %llu는 insigned long long int를 받음
	printf("구조체MyST의 크기는 %llu byte입니다\n", sizeof(t));

	printf("a = %d\n", t.a);
	printf("f = %f\n", t.f);

	return 0;
}
  • 위의 코드에서 출력은 8byte가 나옴 (int + float이기 때문)

  • 구조체 초기화는 MTST t = {100, 3.14f}; 이런식으로도 할 수 있음


구조체의 확장

  • 현재 만든 구조체는 단순히 기본 자료형들의 집합체일 뿐이지만 구조체들이 모듈화가 되면 점점 더 커질 수가 있음

  • 어떤 구조체에서 MYST.f 이렇게 불러오고 또 다른 구조체에서 또 다른 구조체의 값을 불러오고... 이럴 수가 있음


구조체 설명

  • typedef int INT가 있을때

  • typedef = 타입을 정의한다, int = int 자료형을, INT = INT로

  • 이러면 이제 INT라고 써도 int로 인식됨


구조체 사용

  • C에서 구조체를 사용할때는 구조체의 이름만 쓰면 안되고 앞에 꼭 struct를 붙여야 함

  • struct NewStruct a; 이런식으로, 그래서 맨 뒤에 별명을 붙여서 그걸로 사용함

  • 그런데 cpp부터는 개선이 되어서 별명말고 struct 뺀 이름으로도 바로 사용가능 --> 하지만 cpp코드에서도 별명을 사용하는게 아주 좋음

  • 이 코드가 c에서도 사용될 수 있기 때문


어떠한 cpp파일을 빼고 빌드하고 싶을땐?

  • .cpp 파일 우클릭 --> 속성 --> 일반 / 빌드에서 제외 <-- 아마 구조체를 선언해서 초기화 시켜주려고 그런거같음
profile
지식을 담습니다.

0개의 댓글