서로 다른 종류의 데이터들을 하나로 묶기 위해 사용하는 방법
여러 개의 자료형을 묶어 새로운 자료형을 만들 수 있다!
* 구조체 정의
struct point {
int x;
int y;
};
* 구조체 변수 선언
struct point p1;
p1
ㅁㅁㅁㅁ ㅁㅁㅁㅁ
x | y
* 구조체 정의와 동시에 구조체 변수 선언하기
struct point {
int x;
int y;
} p1; //p1은 구조체 point의 변수
* 구조체의 멤버 참조
p1.x = 1;
p1.y = 2;
구조체 변수의 멤버를 참조
* 구조체 안에 구조체 포함 가능
struct rect {
struct point p1;
struct point p2;
};
* 구조체와 포인터
struct student *p;
포인터 p는 student 구조체를 가리키는 포인터
포인터를 이용한 구조체 멤버 액세스
(*p).number, (*p).name 등으로 사용
* 간접 멤버 연산자
포인터를 이용해 구조체 멤버를 가리키기 위해 -> 연산자 사용
구조체 포인터를 이용해 멤버에 접근하기 위해 사용
p->number, p->name
+
struct tag1 f()
{
struct tag1 s;
...
return s;
}
함수가 구조체를 반환하게 되면 원본 구조체의 복사본이 반환
s가 소멸되어도 상관 x
+
구조체의 멤버들의 접근 속도를 빠르게 하기 위해 보통은 4 byte 단위로 정렬
구조체에는 컴파일러에 따라서 추가적으로 패딩 바이트들이 붙을 수 있음
+
구조체 변수의 이름은 구조체 전체! 포인터 아님
댓글