현재 필기는 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에서도 사용될 수 있기 때문