KDONG 2021. 7. 30. 20:43

학습내용

  • 구조체 이해
  • 구조체 처리

학습목표

  • 구조체가 무엇인지 알고 용도를 설명할 수 있다.
  • 구조체를 용도에 맞게 정의하고 선언할 수 있다.

 

구조체 이해

1. 구조체란?

 1) 사용자 정의 데이터 타입

 2) 관련 있는 데이터를 묶어서 처리할 수 있는 자료구조

 3) 서로 다른 데이터 타입의 묶음

 4) 서로 다른 데이터 타입을 묶어서 처리할 수 있도록 사용자가 정의하는 데이터 타입

2. 구조체 정의방법

 1) 구조체의 멤버로 일반 변수뿐만 아니라 배열이나 포인터 선언가능

 2) 구조체를 정의하면 새로운 데이터형이 만들어짐

 3) 구조체 정의 -> 메모리 할당의 의미는 아님

 4) 구조체형 변수 선언 -> 메모리에 할당

 5) 구조체의 크기는 모든 멤버들의 크기의 합보다 크거나 같음

 6) 구조체 멤버 중 가장 큰 멤버의 크기를 기준으로 멤버 할당(Padding)

 7) 구조체의 크기를 구하려면 sizeof 연산자를 이용함

 

구조체 처리

1. 초기화

 1) 선언 시 초기화는 배열 초기화와 동일

 2) { } 안에 멤버들의 초기값을 순서대로 나열

 3) { } 안에 지정한 초기값이 멤버의 개수보다 부족하면 나머지 멤버들은 0으로 초기화

 4) 멤버 접근 연산자 " . " 을 이용한 초기화 가능

 5) 같은 구조체형의 변수들끼리는 서로 초기화나 대입이 가능함

 6) 구조체 간의 초기화 : 멤버 대 멤버 초기화

    ---> 동일한 멤버 간에 1:1로 복사해서 초기화

 7) 구조체 간의 대입 : 멤버 대 멤버 대입

 

2. 구조체 응용

 1. 구조체 멤버 : 구조체를 다른 구조체의 멤버로 사용 가능

 2. 구조체 배열

   - 구조체를 배열로 선언하는 것이 가능 

   - 구조체 배열을 초기화하려면 { } 안에 배열 원소의 초기값을 나열

 3. 구조체 포인터

   - 구조체 포인터를 선언하는 것이 가능

   - 구조체 포인터로 구조체의 멤버에 접근할 때는 "->" 간접 접근 연산자를 사용

 

학습정리

1. 구조체 이행

  • 구조체는 서로 다른 데이터를 묶어서 처리하기 용이한 자료구조임
  • 구조체는 먼저 정의하고 변수를 선언하여 사용함
  • 구조체 선언 시 구조체명 앞에 struct라는 키워드를 사용해야 함
  • 구조체 변수는 모든 데이터 타입을 사용할 수 있음

2. 구조체 처리

  • 구조체는 선언 시 초기화하는 것이 가능함
  • 선언 시 초기화에는 배열과 동일한 방법으로 초기화함
  • 구조체도 필요에 따라 구조체 배열을 선언하는 것이 가능함
  • 구조체 포인터로 구조체 멤버에 접근할 때는 간접 접근 연산자 ->를 사용함