[C언어] 15. 구조체
구조체 Structure
struct tag {
int value;
char str[100];
} value1, value2;
여러가지 변수를 하나의 구조로 활용하는 데이터타입을 구조체(structure)
라 합니다.
구조체는 선언된 하나의 묶음을 레코드(record)
, 각각의 구성 요소를 필드(field)
나 멤버(member)
라 부릅니다.
선언, 초기화
구조체는 여러 변수를 가질 수 있기 때문에, 중괄호를 활용하여 내부 맴버를 선언합니다.
중괄호가 끝난 이후에는 세미콜론을 꼭 작성하여야 합니다.
struct records {
int value;
char str[100];
}; // 구조체 선언
struct records a; // 레코드 선언
구조체를 정의한 이후에 바로 레코드로 선언하는 것이 가능합니다.
하지만, 코드의 가독성이 좋지 않기 때문에, 자주 활용하는 방식은 아닙니다.
struct records a;
레코드를 선언하는 방식입니다.
활용할 구조체와 레코드의 이름을 작성하여 레코드를 선언합니다.
단, 함수와 동일하게, 구조체가 선언되는 줄보다 위에 작성이 되어있어야 작동됩니다.
struct records a = {1, "abc"};
선언과 동시에 초기화 하는 방식입니다.
이전에 배열에서 활용하던 방식과 비슷하게 사용할 수 있습니다.
맴버의 선언된 순서를 맞추어 작성하며 초기화할 수 있습니다.
struct records {
int value;
char str[100];
} a = {10, "string"};
권장되는 방식은 아니지만, 위 방식으로도 선언이 가능합니다.
맴버 접근
struct records a; // 선언
a.value //접근
레코드를 선언하였다면, 점(.)
을 사용하여 멤버에 접근할 수 있습니다.
구조체와 포인터
struct records *a;
(*p).value = 10;
p->value = 10;
구조체도 당연히 데이터 타입이기 떄문에, 포인터를 활용할 수 있습니다.
하지만 활용할때에 *연산자가 우선순위가 낮아 괄호로 묶어야 합니다.
이를 해결하고자 -> 연산자를 활용합니다.
💡 지적, 오류 환영합니다
Comments