아래는 제공된 강의 설명과 예제 코드를 한 줄 한 줄 분석하여 자세하게 정리한 내용입니다.
구조체란?
열거체와 구조체의 차이
enum Color { Red, Green, Blue };
)구조체의 특징
구조체 멤버 접근
.
연산자를 사용합니다.#define NAME_SIZE 32
NAME_SIZE
를 32로 정의했습니다.#define
은 전처리기 지시자로, 코드 내에서 NAME_SIZE
를 32로 치환합니다.struct _tagStudent
{
char strName[NAME_SIZE];
int iNumber;
int iKor;
int iEng;
int iMath;
int iTotal;
float fAvg;
};
_tagStudent
라는 이름의 구조체를 정의했습니다.strName
: 학생 이름을 저장하는 char
배열 (최대 31글자 + NULL).iNumber
: 학번을 저장하는 정수형 변수.iKor
, iEng
, iMath
: 국어, 영어, 수학 점수를 저장하는 정수형 변수.iTotal
: 총점을 저장하는 정수형 변수.fAvg
: 평균 점수를 저장하는 실수형 변수._tagStudent tStudent;
_tagStudent tStudentArr[100] = {};
_tagStudent
타입의 변수 tStudent
를 선언했습니다. 이는 학생 한 명의 데이터를 저장합니다._tagStudent
타입의 배열 tStudentArr[100]
을 선언하고 초기화했습니다.{}
로 초기화했으므로 배열의 모든 값이 0으로 초기화됩니다.tStudent.iKor = 100;
tStudent
구조체의 iKor
멤버에 100을 할당했습니다..
연산자를 사용하여 구조체 멤버에 접근합니다.tStudent.strName[0] = 'a';
tStudent.strName[1] = 'b';
tStudent.strName[2] = 0;
tStudent.strName
배열에 직접 문자 값을 할당하여 문자열을 생성했습니다.\0
또는 0
)로 끝나야 합니다. 따라서 마지막에 0
을 넣어 문자열의 끝을 명시했습니다.strcat_s(tStudent.strName, "문자열 붙이기");
strcat_s
를 사용했습니다.tStudent.strName
에 "문자열 붙이기"
를 추가합니다.strcat_s
는 기존 문자열 뒤에 새로운 문자열을 붙이고, 자동으로 NULL 문자를 추가합니다.strcpy_s(tStudent.strName, "홍길동");
strcpy_s
를 사용하여 "홍길동"
을 tStudent.strName
에 복사했습니다.strcpy_s
는 안전하게 문자열 복사를 수행하며, NULL 문자도 자동으로 추가합니다.cout << "비교할 이름을 입력하세요 : ";
char strName[NAME_SIZE] = {};
cin >> strName;
strName
에 저장합니다.NAME_SIZE
보다 크면 잘릴 수 있습니다.if (strcmp(tStudent.strName, strName) == 0)
strcmp
함수로 두 문자열을 비교합니다.tStudent.strName
과 strName
이 같으면 0
을 반환합니다.cout << "이름 길이 : " << strlen(tStudent.strName) << endl;
strlen
함수는 문자열의 길이를 반환합니다.cout << "이름 : " << tStudent.strName << endl;
cout << "학번 : " << tStudent.iNumber << endl;
cout << "국어 : " << tStudent.iKor << endl;
cout << "영어 : " << tStudent.iEng << endl;
cout << "수학 : " << tStudent.iMath << endl;
cout << "총점 : " << tStudent.iTotal << endl;
cout << "평균 : " << tStudent.iTotal / 3 << endl;
iTotal / 3
으로 계산되지만, 정수형 나눗셈이므로 실수 값이 아닌 정수 값으로 출력됩니다._tagStudent
구조체 타입을 정의합니다.tStudent
라는 단일 변수와 100개의 배열 변수를 선언합니다.tStudent
의 멤버 변수에 데이터를 할당하거나 문자열을 복사합니다.문자열 처리
strcpy_s
와 strcat_s
같은 안전한 문자열 함수 사용을 권장합니다.초기화
{}
로 초기화하여 모든 값을 0으로 설정할 수 있습니다.정수 나눗셈
tStudent.iTotal / 3
은 정수형으로 계산되므로, 정확한 실수 값을 얻으려면 static_cast<float>
를 사용해야 합니다.구조체 활용