클래스와 매우 유사

어떤 대상을 추상화한 데이터 구조

<aside> ⛺ 구조체의 구조

struct 구조체이름

{

}

</aside>

주의점!!

  1. 구조체의 필드는 초기화 할 수 없다.

    스크린샷 2024-04-12 오후 4.18.10.png

  2. 생성자 안에서 반드시 모든 필드들을 초기화 해줘야한다

  3. 상속 불가능 / 인터페이스 장착은 가능

클래스와 결정적인 차이점 : 구조체 = 값 형(int, float …) / 클래스 = 참조형(class, string …)

스크린샷 2024-04-12 오후 5.06.16.png

구조체 예시

struct Point
{
    public int x;
    public int y;
    public Point(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
}

void Start()
{
    Point point1 = new Point(1,1);
    Point point2 = point1;
    // point1 -> (1,1) point2 -> (1,1)
    point2.x = 2;
    point2.y = 2;
    // point1 -> (1,1) point2 -> (2,2)
}

point2는 point1의 값을 그냥 복사 해 온 것이기 때문에 point2의 값을 변경해도 point1에 영향을 미치지 않음


클래스 예시

스크린샷 2024-04-12 오후 5.07.47.png

 class Point
{
    public int x;
    public int y;
    public Point(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
}

void Start()
{
    Point point1 = new Point(1,1);
    Point point2 = point1;
    // point1 -> (1,1) point2 -> (1,1)
    point2.x = 2;
    point2.y = 2;
    // point1 -> (2,2) point2 -> (2,2)
}

point1과 point2는 같은 객체를 가리키고 있기 때문에 point2의 값을 변경하면 point1의 값도 변경된다

구조체는 스택에 만들어지고 클래스는 힙에 만들어진다

구조체에서는 객체를 생성하면 스택에 그냥 메모리를 똑같이 더 잡게 된다