상세 컨텐츠

본문 제목

[C++] 문법_구조체

C++ 문법

by simstealer 2022. 4. 15. 16:34

본문

구조체
    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++ 문법' 카테고리의 다른 글

[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

관련글 더보기

댓글 영역