구조체 Structure

struct tag {
    int value;
    char str[100];
} value1, value2; 

여러가지 변수를 하나의 구조로 활용하는 데이터타입을 구조체(structure)라 합니다.


struct

구조체는 선언된 하나의 묶음을 레코드(record), 각각의 구성 요소를 필드(field)멤버(member)라 부릅니다.


선언, 초기화

structure

구조체는 여러 변수를 가질 수 있기 때문에, 중괄호를 활용하여 내부 맴버를 선언합니다.

중괄호가 끝난 이후에는 세미콜론을 꼭 작성하여야 합니다.


struct records {
    int value;
    char str[100];
}; // 구조체 선언

struct records a; // 레코드 선언

구조체를 정의한 이후에 바로 레코드로 선언하는 것이 가능합니다.

하지만, 코드의 가독성이 좋지 않기 때문에, 자주 활용하는 방식은 아닙니다.


struct records a;

레코드를 선언하는 방식입니다.

record

활용할 구조체와 레코드의 이름을 작성하여 레코드를 선언합니다.

단, 함수와 동일하게, 구조체가 선언되는 줄보다 위에 작성이 되어있어야 작동됩니다.


struct records a = {1, "abc"};

선언과 동시에 초기화 하는 방식입니다.

이전에 배열에서 활용하던 방식과 비슷하게 사용할 수 있습니다.

맴버의 선언된 순서를 맞추어 작성하며 초기화할 수 있습니다.


struct records {
    int value;
    char str[100];
} a = {10, "string"};

권장되는 방식은 아니지만, 위 방식으로도 선언이 가능합니다.


맴버 접근

struct records a; // 선언

a.value //접근

레코드를 선언하였다면, 점(.)을 사용하여 멤버에 접근할 수 있습니다.

member


구조체와 포인터

struct records *a;

(*p).value = 10;
p->value = 10;

구조체도 당연히 데이터 타입이기 떄문에, 포인터를 활용할 수 있습니다.

하지만 활용할때에 *연산자가 우선순위가 낮아 괄호로 묶어야 합니다.

이를 해결하고자 -> 연산자를 활용합니다.



💡 지적, 오류 환영합니다

Comments