Layer7_5차시_수업정리

k4bunny·2025년 4월 14일

Layer7

목록 보기
2/13

4/16 수업정리

구조체란?

서로 다른 자료형을 갖는 자료들의 집합이다.

// 구조체 선언 원형
struct 구조체이름
{
변수1_자료형 변수1_이름;
변수2_자료형 변수2_이름;
}

서로 다른 자료형의 집합?

기존에는 서로 다른 자료형의 변수를 일일이 선언해 주었다.
값 또한 일일이 scanf() 혹은 getchar()을 이용해 할당해 주어야 했다.

// 이름, 과목, 점수를 받을 변수 선언
char name[];
char subject[];
double score;

// 변수에 값을 할당
scanf("%s", name);
scanf("%s", subject);
scanf("%.1lf", &score);

하지만 이러한 과정을 구조체 하나를 선언하여 단순화시킬 수 있다.

// 이름, 과목, 점수를 지닌 구조체 선언
struct student		// "student"라는 구조체 선언
{
    char name[];
	char subject[];
	double score;
} s;				// 구조체 변수 "s" 선언

// 구조체 변수 초기화
struct student s = {이름, 과목, 점수}

구조체 선언 시, 주의할 점

  • 구조체 변수 또한 지역변수와 전역변수의 개념이 존재한다.
  • 배열과 마찬가지로 초기값을 할당받지 못한 경우 0으로 초기화된다.

다양한 구조체 맴버

배열

  • 문자열과 마찬가지로 사용 가능하다.

포인터

  • 구조체의 맴버로 포인터 변수도 선언 가능하다.

typedef를 통한 구조체 재정의

// 구조체 선언 후, "NUM"으로 재정의
struct num
{
	num1;
    num2;
}NUM;

typedef struct num NUM;
// 구조체를 선언하며, "NUM"으로 재정의
typedef struct num
{
	num1;
    num2;
}NUM;

구조체 배열

// 구조체 변수를 배열 형식으로 선언
struct num
{
	num1;
    num2;
}s[(정수)];		// 구조체 배열 선언

구조체 관련 연산자

// .(dot) 연산자
. 는 클래스의 멤버를 직접적으로 접근한다.
(구조체 변수 이름).(맴버명)

// -> 연산자
-> 는 포인터를 통해 멤버를 간접적으로 접근한다.
(구조체 포인터)->(맴버명)
profile
배고파요 ..

0개의 댓글