[C, C++] 구조체

성현씨·2024년 2월 20일
0

C / C++

목록 보기
14/15
post-thumbnail

◾ 구조체

  • 다양한 자료형을 하나로 묶을 수 있는 복합 자료형으로 다양한 형태의 데이터를 처리할 때 사용된다.
  • 즉 사용자가 만드는 자료형이다.
  • 구조체를 사용하려면 선언을 해야한다. (struct)
#include <stdio.h>

struct student     // 구조체 선언
{
	int num;            // int 에 저장
	double grade;       // double 에 저장
};

int main()
{	
	struct student s1;                  // struct student 형의 변수 선언, s1 에 집어넣기
						               
	s1.num = 2;                         // s1 의 num 멤버에 2 저장
	s1.grade = 2.7;                    // s1 의 grade 멤버에 2.7 저장

	printf("학번 : %d\n", s1.num);      // num 멤버 출력
	printf("학점 : %.1f\n", s1.grade);  // grede 멤버 출력

	return 0;
}

  • 구조체를 선언하게 되면 위와 같이 main 함수에서 s1. 만 눌러도 목록이 나오게된다.
  • 구조체 변수가 사용할 멤버에 접근할 때 멤버 접근 연산자인 ( . ) 을 사용해야한다.

❗ 구조체 선언이 main 함수 앞에 있으면 프로그램 전체에서 사용할 수 있고, 함수 안에 선언하면 그 함수 안에서만 사용이 가능하다.

struct student s1; 

→ struct student : int 와 double 로 이루어진 새로운 자료형이다.
→ s1 : 구조체 변수명이다.

✳ 구조체 변수의 크기

  • 구조체 멤버의 크기가 들쑥날쑥한 경우 멤버 사이에 패딩 바이트를 넣어 멤버를 가지런하게 정렬합니다. 이를 바이트 얼라인먼트 라고 합니다.
struct student     // 구조체 선언
{
	int num;              
	double grade;
};
  • grade 멤버의 크기가 가장 크므로 8byte 가 기준 단위가 됩니다.
  • num 은 4byte 이므로 빈 곳은 패딩 바이트로 채우게 됩니다.
  • 결국 패딩 바이트가 포함되므로 전체 구조가 4, 4, 8 로 16byte 가 됩니다.
profile
순수청년

0개의 댓글