202204_15 c++ 구조체

2022. 4. 15. 17:21C++

프로그래밍 기초 ( 메모리 ,cpu , 디스크)
구조체
1. 절차적
2. 구조적
3. 객체지향적
### 추상화 ###
C 언어에서 코드를 추상화하는 데 사용되는 삼총사 : 배열, 구조체 , 함수

추상화 ??? 실제 세계 (현상)를 간략화/기보화/보편화 해서 표현한것

★ 코드에서 추상화가 필요한 이유 ★ : 결국 코드는 사람이 짜는 것이기 떄문에

다른 사람이 코드를 해석하기 편리해야 하고 

다른 사람이 인수인계받아서 유집호수하기 편리해야 하고

다른 사람들과 함께 공동으로 코드를 만들기 편리해야 하고

-배열 : 속성이 동일한 여러 개의 데이터를 같은 이름과 순서를 지정한 연속된 번호로

서로 연관되어 있음을 표시함으로써 추상화함

-구조체 : 데이터 (자료형)을 실제로 쓰이는 데이터끼리 묶어서 추상화

-함수 : 프로세스(코드)를 특정 기능 단위로 묶어서 추상화

최악의 추상화 -> 추상화를 단계를 상승시키는 과정

ex) string a,b,c; // <- 최악의 추상화 

     string a[3]; // <- 위의 것보다는 좀 낫다.

     string name1, name2, name3; // <- 아니면 이런 식으로든지

     stirng studendtName[3]; // 위의 것보다 의도가 명료하게 드러나기 떄문에 좋은 추상화

 

구조체란??? 함수 위에 써야함 

- 변수를 모아 놓은 집합체

- 특정 변수들이 무언가의 하위 개념으로 묶일 수 있을 때

- studnetName[10], studentAge[10], studentOkrScore[10] ....

- '학생' 의 'XXX' 

- 이름, 나이, 국어점수, 석차 등등을 '학생' 이라는 구조체로 묶어서 사용

 

1.구조체를 정의하는 위치 : 구조체가 사용되는 함수의 앞에 정의한다.

   

 

2. 구조체 정의의 방법

struct 구조체 변수명

{

     구조체 안에 들어갈 하위 변수들

    (위의 예시에 따르면 이름, 나이,  국어점수 , 석차같은 애들이 하위변수다. )

};

구조체는 일종의 우리가 새롭게 만든 데이터형이다.

 

구조체 안에 들어갈 수 있는 하위변수는 무엇이 있을까???????

당연히 int/bool,float 같은 기본 자료형들은 모두 사용 가능

string <- 클래스

 

3. 구조체의 선언과 초기화

기본적으로 구조체 변수의 개념은 배열 변수의 개념과 동일

int a[3] = {50, 70 ,80};

구조체 변수도 다음과 같이 선언과 동시에 초기화할 수 있다.

 

player.HP=player.HP - monster

 

struct score
{
int kor;
int eng;
int math;
};
struct student
{
string name; // 클래스도 쓸 수 있고
int age; // 기본 자료형도 쓸 수 있고
string homeTown; // 주소
int handsomeNess; // 잘생김
int pride; // 자신감
score myScore; // 점수
}jaemin, jinho; // 중괄호의 끝과 세미콜론 사이에다 student의 변수를 미리 선언해 줄수도 있음.
// name, age , korScore , rank 라는 하위 변수를 가지고 있는 students
int main() // 이놈이 지금 우리가 쓰고 있는 유일한 함수
{
cout << "Hello World\n";
}

jaemin.age = 25; // jaemin 나이
jaemin.name = "김재민"; // jaemin의 name은 김재민
jaemin.handsomeNess = 80; // jaemin의 handsomeNess은 100
jaemin.pride = 100; // jaemin의 pride는 1
jaemin.homeTown = "남양주"; // jaemin의 주소는 남양주
jaemin.myScore.eng = 77;
jaemin.myScore.kor = 77;
jinho.handsomeNess = 60;



 

 

 

 

 

'C++' 카테고리의 다른 글

C++ 객체지향 프로그래밍 상속쪽 오류  (0) 2022.05.31
객체지향 프로그래밍  (0) 2022.05.30
20220414_게임을 만들어보자!  (0) 2022.04.14
20220413_배운것~~~!  (0) 2022.04.13
20220412_ c++ 조건문 반복문 분기문  (0) 2022.04.12