Engineering Note

[C] Struct 구조체 본문

Programming Language/C programming

[C] Struct 구조체

Software Engineer Kim 2021. 2. 24. 15:50

구조체

구조체는 다양한 자료형을 하나로 묶을 수 있는 복합 자료형으로 다양한 형태의 데이터를 처리할 때 기본으로 사용됩니다.

  • C언어는 자료를 체계적으로 관리하기 위해 구조체라는 문법을 제공합니다.
  • 배열은 같은 형태의 데이터를 묶어 반복문으로 처리할 수 있는 좋은 자료형이지만 배열을 사용하려면 모든 데이터의 형태가 같아야 합니다.
    • 학생의 학번(315), 이름(홍길동), 학점(3.5)처럼 다른 자료형을 하나의 배열로 선언해서 처리하는 것은 불가능합니다.
    • 학번은 정수이고 이름은 문자열, 학점을 실수 이기 때문입니다.
  • 만약 다른 형태의 데이터들을 하나로 묶어 단일 자료형으로 다룰 수 있다면 학생별로 데이터를 처리할 수있고 반복문으로 많은 학생의 데이터를 훨씬 효율적으로 처리할 수 있습니다.

구조체 선언

  • 구조체는 하나의 자료형으로 변수 선언이 가능하지만 변수 선언 전에 구조체의 형태를 컴파일러에 미리 알려주는 구조체 정의(선언)을 해야합니다.
  • 구조체 선언이 끝나면 새로운 자료형이 만들어지며 그 이후부터는 사용자가 정의한 새로운 자료형으로 컴파일러가 인식이 가능하고 구조체의 변수를 사용할 수 있습니다.
  • 구조체 선언 위치를 main 함수 앞에서 하면 프로그램 전체에서 사용할 수있고, 함수 안에 선언하면 그 함수 안에서만 쓸 수 있습니다.

구조체 만들고 사용하기

  • 구조체는 struct 키워드로 정의(선언)합니다.
  • 구조체는 사용자 정의 자료형으로 정의만 해서는 사용 할 수 없기때문에 구조체도 변수로 선언 해서 사용합니다.
  • struct 구조체이름 변수이름;
  • 구조체는 구조체 정의와 구조체 변수 선언을 따로 할 수도 있고, 구조체 정의 시 사용한 닫는 중괄호와 세미콜론 사이에 변수를 지정해 주면 구조체를 정의하는 동시에 변수를 선언 할 수도 있습니다.(이때의 변수는 전역변수)
  • 새로 만든 구조체 변수를 선언
    • struct 구조체명 변수명;
    • 구조체 변수를 선언하면 비로소 저장 공간이 할당
    • 저장공간의 크기는 모든 멤버를 더한 전체 저장공간이 하나의 구조체 변수
  • C언어에서 구조체를 정의하고 구조체 변수를 선언 하기 위해서는 struct 구조체명 변수명; 으로 매번 struct 구조체명을 변수명 앞에 써줘야 하는 불편함이 있기 때문에 구조체를 정의하고 typedef struct 구조체명 구조체별칭; typedef를 사용하여 구조체 별칭을 지정할 수 있다. 이렇게 하면 구조체 별칭으로 구조체 변수를 선언 할 수 있다.
  • 또, 구조체를 정의 할때 struct 앞에 typedef를 사용하여 정의와 동시에 별칭을 지정 해줄 수도 있다.(간편하기 때문에 이 방법이 가장 많이 사용된다.)

구조체 멤버 접근

  • 일반 변수로 선언한 구조체의 멤버에 접근 할 때는.(점)을 사용

 

-------------------------------------------------------------------------------------------------------------

출처 : C언어 코딩 도장, 혼자 공부하는 C언어

'Programming Language > C programming' 카테고리의 다른 글

[C] 14-1 다차원 배열  (0) 2021.04.04
[C] 구조체 포인터 사용하기  (0) 2021.03.03
[C] 배열  (0) 2021.02.22
[C] 16-1 동적 할당 함수 (배열처럼 사용하기)  (0) 2021.02.12
[C] 16 -1 동적할당함수  (0) 2021.02.12
Comments