● 구조체
1. 절차적
2. 구조적
3. 객체지향적
### 추상화 ###
- C언어에서 코드를 추상화하는 데, 사용되는 삼총사 : 배열, 구조체, 함수
- 추상화란? 실제 세계 ( 현상 )를 간략화/기호화/보편화해서 표현한 것
- 코드에서 추상화가 필요한 이유 : 결국 코드는 사람이 짜는 것이기 때문에 다른 사람이 코드를 해석하기 편리해야 하고 인수인계받아서 유지보수하기 편리해야하며 다른 사람들과 함께 공동으로 코드를 만들기 편해야 한다.
- 구조체는 일종의 우리가 새롭게 만든 데이터형이다.
- 구조체 안에 들어갈 수 있는 하위변수는 무엇이 있을까?
당연히, int/bool, float 등과 같은 자료형들은 모두 사용 가능하다.
배열에 경우 : 속성이 동일한 여러 개의 데이터를 같은 이름과 순서를 지정한 연속된 번호로 서로 연관되어 있음을 표시함으로써 추상화함
함수에 경우 : 프로세스(코드)를 특정 기능단위로 묶어서 추상화
구조체 : 데이터(자료형)을 실제로 쓰이는 데이터끼리 묶어서 추상화 한 것
- 변수를 모아 놓은 집합체
- 특정 변수들이 무언가의 하위 개념으로 묶일 수 있을 때
- studentName[10], studentAge[10], studentKorScore[10] ... 공통점은 '학생'의 'xxx' 이름, 나이, 국어점수, 석차 등등을 '학생'이라는 "구조체"로 묶어서 사용
●구조체 문법 사용법
1. 구조체를 정의하는 위치 : 구조체가 사용되는 함수(main ... 등등)의 앞에 정의한다.
2. 구조체 정의의 방법
struct 구조체 변수명
{
구조체 안에 들어갈 하위 변수들 "이름, 나이, 국어점수, 석차 등등"
};
3. 구조체의 선언과 초기화 방법
기본적으로 구조체 변수의 개념은 배열, 변수의 개념과 동일!
ex) int a[3] = {50, 70, 80}
최악의 추상화 -> 추상화 단계를 상승시키는 과정
string a, b, c; //최악의 추상화
string a[3]; //위의 것보다는 좀 낫다
string name1, name2, name3; // 위의 것보다는 낫다
string studentName[3]; //사용의 의도가 명료하게 드러나기 때문에 좋은 추상화
#include <iostream>
#include <string>
using namespace std;
struct score
{
int kor;
int eng;
int math;
};
struct student
{
string name;
int age;
string homTown;
int pride;
int month[12]; //물론 배열도 만들 수 있다.
score myscore; //구조체 안에 다른 구조체를 넣을 수도 있다.
}seoyeon, jaehyuk; //중괄호와 세미콜론사이에 변수를 미리 선언할 수 도 있다 " main 함수 안에 student minseop; 와 같다"
int main()
{
student minseop; //구조체 변수의 선언
minseop.name = "홍길동"; //minseop의 name은 " 홍길동"이다.
minseop.age = 22; //minseop의 age는 22이다.
minseop.homTown = "인천"; //minseop의 고향은 인천이다.
minseop.pride = 1; //minseop의 자신감은 1등급이다.
//초간단 실습 : student 구조체를 사용해서 자기 자신의 정보를 입력해 보자.
minseop.myscore.eng = 100; //구조체 안에 있는 구조체의 변수 값 넣기
score myScore = { 50, 70, 80 }; //배열을 초기화하듯 구조체 변수도 초기화할 수 있다.
cout << myScore.kor << myScore.eng << myScore.math << endl;
cout << minseop.homTown << endl;
cout << minseop.age << endl;
cout << minseop.name << endl;
cout << minseop.pride << endl;
cout << minseop.myscore.eng << endl;
[C++] 별 찍기 (0) | 2022.04.20 |
---|---|
[C++] 문법_for 문 (0) | 2022.04.18 |
[C++] 콘솔용 탈출 게임 만들어보기(수정 중) (0) | 2022.04.14 |
[C++] 문법_ASCII코드와 _getch() 실습 (0) | 2022.04.13 |
[C++] 문법_배열 실습2 (0) | 2022.04.13 |
댓글 영역