Github avatar

GyeongSu Han's Github Pages

Struct 초기화

Jul 24, 2016 · C/C++

#include <stdio.h>

struct s {
  int a;
  int b;
};

int main(int argc, char* argv[]) {
  struct s s1, s2;

  s1.a = 1;
  s1.b = 2;

  s2 = s1;

  struct s s3 = {1, 2};

  struct s s4 = {
    .a = 3,
    .b = 4
  };

  return 0;
}

위와 같이 일반적으로 사용하는 방법이다.

s1의 경우는 값을 변수마다 직접 넣어주는 방법이다. 이 방법은 선언후 따로 사용이 가능하다.

s2의 경우는 기존의 값을 복사하는 연산이다.

이 과정에서 주의할 점은 struct에서 문자열을 사용할 때 char[]을 사용하지 않고, char* 을 사용할 경우 포인터의 주소가 복사되므로 이 과정에서는 따로 처리를 해주어야 한다.

문자열과 관련된 부분은 항상 주의깊게 살펴야 한다.

s3의 경우는 순서대로 하나씩 넣는 경우이다. a에 1을, b에 2를 넣는 것이다.

이 방법에서는 생략이 가능한데, 생략된 부분은 0의 값을 가진다. 이 경우에서는 선언에서만 초기화가 가능하다.

s4의 경우는 s3와 마찬가지로 선언과 동시에 초기화가 가능한 방법이다.

이 방법은 s3와 유사한 방법이지만, s1과 같이 하나씩 직접 넣어준다. 이 방법에서도 초기화하지 않은 변수의 경우는 0의 값을 가지게 된다.