C의 구조

개요



이전 게시물에서 다루었듯이 구조는 관련된 요소를 논리적으로 그룹화하는 데 매우 유용합니다. 이것은 배열과 결합하여 더 확장할 수 있습니다. 구조체는 유형이므로 C에서 구조체 배열을 만드는 것은 완벽하게 유효합니다. 따라서 많은 날짜를 추적해야 하는 경우(이전 예를 계속하기 위해) 모든 날짜를 한 곳에 보관할 수 있는 배열을 만들 수 있습니다.


구조체 배열 선언

구조체 배열을 선언하는 구문은 다른 배열로 선언하는 것과 유사하지만 struct 키워드와 구조체 유형이 앞에 옵니다.

// declares an array of ten items of structure type date
struct date myDates[10]


배열 내부의 요소에 액세스하거나 할당하려면 인덱스와 점 표기법을 사용합니다.

myDates[1].month = 7;
myDates[1].day = 9;
myDates.year = 1979;


구조를 포함하는 배열을 초기화하는 것은 다차원 배열을 초기화하는 것과 유사합니다. 아래의 내부 중괄호는 선택 사항이지만 코드를 훨씬 더 읽기 쉽게 만들 수 있으므로 권장됩니다.

struct date myDates[3] =
{
  {7, 9, 1979},
  {11, 26, 2019},
  {12, 26, 2019},
};

  // to initialize values besides the one declared in the initial initialization, the curly brackets can be used inside the declaration
struct date myDates[3] =
{
  [4] = {1, 1, 2020}
};

// ...and dot notation can be used to assign specific elements as well
struct date myDates[3] = {[1].month = 12, [1].day =30};




배열을 포함하는 구조

배열을 멤버로 포함하는 구조를 정의하는 것도 가능합니다. 이것의 가장 일반적인 사용 사례는 구조체 내부에 문자열을 갖는 것입니다. 일 수와 월 이름의 약어를 모두 포함하는 'month'라는 구조를 만듭니다.

struct month
{
  int numberOfDays;
  char name[3];
}

struct month aMonth;
aMonth.numberOfDays = 31;
aMonth.name[0] = 'J';
aMonth.name[1] = 'a';
aMonth.name[2] = 'n';

// a quicker way to do the above for the name would be to use a shortcut
struct month aMonth = {31, {'J', 'a', 'n'}};

좋은 웹페이지 즐겨찾기