SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
C++ 스터디
7주차
7주차 주제
구조체
배열의 한계
배열을 사용하면
변수들이 메모리에 연속적으로 할당되는 점을
이용해 쉽게 여러 개의 변수들을 다룰 수 있다.
배열로는 한 타입의 변수에 대해서만 사용할 수 있다.
BUT
Int age[100]; // 정수를 저장할 변수 100개를 연속적으로 할당
구조체 (Structure)
구조체는 여러 종류의 자료형들을
자유롭게 모아서 선언하고 사용할 수 있다.
구조체
int Char[10] Double
stringbool
구조체 정의
구조체는 사용에 앞서 정의해야 한다.
구조체는 보통 전역으로 정의한다. (main함수 윗 쪽에)
반드시 정의를 하고 나서 세미콜론으로 마무리~
Struct 구조체명
{
자료형 변수명;
자료형 변수명;
…
};
Struct People
{
Char name[20];
Char job[20];
Char email[20];
Int age;
};
형식 예시
멤버 변수들
구조체 변수 선언
구조체 변수를 선언한다는 의미는
정의한 구조체의 멤버변수들을 새로운 연속된 공간에
할당한다는 것
변수 people은 People형 구조체 변수이다.
구조체 변수 people은 구조체 People에서 정의한
멤버변수들을 갖는다.
구조체명 변수명; People people;
형식 예시
구조체 변수 선언2
구조체 정의와 함께 변수를 선언 할수도 있다.
Struct 구조체명
{
자료형 변수명;
자료형 변수명;
…
}구조체변수명;
Struct People
{
Char name[20];
Char job[20];
Char email[20];
Int age;
}people;
형식 예시
멤버 변수 접근
구조체 변수를 선언하면 해당 변수의 멤버 변수들에 접근할 수 있다.
( . ) 연산자를 이용
구조체변수.멤버변수; people.age;
people.name;
people.job;
형식 예시
구조체 메모리 할당
Struct Score
{
Char name[12];
Int kor, eng, math;
Double avg;
};
Score score;
예시
name kor eng math avg ………….
&people
&people.name
0 12 16 20 24 32
&people.kor
&people.eng
Sizeof(people) == ?
Sizeof(people.name) == ?
패딩 바이트
Struct Data
{
Char ch;
Int i;
Double d;
};
Data data;
예시
Sizeof(data) == ?
Sizeof(data.ch) == ?
Struct Score
{
Char name[10];
Int kor, eng, math;
Double avg;
};
Score score;
예시
Sizeof(Score) == ?
메모리에서 값을 읽어올때 32bit (4바이트) 받아온다. (또는 64비트)
패딩 바이트
패딩 바이트가 들어감으로서 구조체의 각 멤버에 접근할 때
메모리를 한 번만 읽어도 되게 보장한다.
구조체 변수 할당
두 구조체 변수가 같은 구조체의 변수라면 할당이 가능한다.
할당의 의미는 멤버변수가 복사되는 것이다.
people2의 멤버변수의 값들이 people1의 멤버변수들에 씌워짐
구조체변수 = 구조체변수; people1 = people2;
형식 예시
구조체 변수 배열 선언
구조체도 일반 변수와 같이 배열 선언이 가능함.
그리고 동시에 초기화도 가능함
구조체명 구조체변수[배열 크기]; People people[10];
형식 예시
구조체 변수 배열 선언
구조체와 포인터
People people;
People * pointer = &people;
people.name == (*p).name == p -> name
학생들의 성적 관리 프로그램을 만드시오
주어진 데이터 : 이름, 3과목의 성적
만들 데이터 : 각 학생의 평균,
과목별 평균
어떻게 데이터를 저장하고 사용할 것인가?
Char name_A[12];
Int kor_A, eng_A, math_ A, total_A;
Float average_A;
Char name_B[12];
Int kor_B, eng_B, math_ B, total_B;
Float average_B;
Char name_C[12];
Int kor_C, eng_C, math_ C, total_C;
Float average_C;
학생들의 성적 관리 프로그램을 만드시오
주어진 데이터 : 이름, 4과목의 성적 (100명)
만들 데이터 : 학생 별 평균,
과목별 평균
< IDEA 1 >
어떻게 데이터를 저장하고 사용할 것인가?
Char name[100][12];
Int kor[100];
Int eng[100];
int math[100];
int total[100];
Float average[100];
학생들의 성적 관리 프로그램을 만드시오
주어진 데이터 : 이름, 4과목의 성적 (100명)
만들 데이터 : 각 학생의 평균,
과목별 평균
< IDEA 2 >
어떻게 데이터를 저장하고 사용할 것인가?
Struct student
{
Char name[12];
Int kor, eng, math, total;
Float average;
}
학생들의 성적 관리 프로그램을 만드시오
주어진 데이터 : 이름, 4과목의 성적 (100명)
만들 데이터 : 각 학생의 평균,
과목별 평균
< IDEA 3 >
어떻게 데이터를 저장하고 사용할 것인가?
예제 풀어보기1
스터디원들에 대한 구조체
[ 구조체명 : Student ,
멤버변수 : 이름 (name), 나이(age), 입학년(year), 사는 곳 (address) ]
를 선언하고 초기화 한후 이름을 입력하면 해당 이름의 모든 멤버변수가 출
력되는 프로그램을 작성하시오

Contenu connexe

Tendances

제2장 데이터 조회하기
제2장 데이터 조회하기제2장 데이터 조회하기
제2장 데이터 조회하기sang doc Lee
 
Clean code(02)
Clean code(02)Clean code(02)
Clean code(02)규열 김
 
[Swift] Tuple
[Swift] Tuple[Swift] Tuple
[Swift] TupleBill Kim
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130Yong Joon Moon
 
엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613Yong Joon Moon
 
엘라스틱서치 이해하기 20160612
엘라스틱서치 이해하기 20160612엘라스틱서치 이해하기 20160612
엘라스틱서치 이해하기 20160612Yong Joon Moon
 
Item10. toString 메소드는 항상 오버라이드 하자
Item10. toString 메소드는 항상 오버라이드  하자Item10. toString 메소드는 항상 오버라이드  하자
Item10. toString 메소드는 항상 오버라이드 하자Sungho Moon
 
R 기초 : R Basics
R 기초 : R BasicsR 기초 : R Basics
R 기초 : R BasicsYoonwhan Lee
 

Tendances (11)

제2장 데이터 조회하기
제2장 데이터 조회하기제2장 데이터 조회하기
제2장 데이터 조회하기
 
R 시작해보기
R 시작해보기R 시작해보기
R 시작해보기
 
Clean code(02)
Clean code(02)Clean code(02)
Clean code(02)
 
Java
JavaJava
Java
 
[Swift] Tuple
[Swift] Tuple[Swift] Tuple
[Swift] Tuple
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130
 
엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613엘라스틱서치 이해하기 20160613
엘라스틱서치 이해하기 20160613
 
엘라스틱서치 이해하기 20160612
엘라스틱서치 이해하기 20160612엘라스틱서치 이해하기 20160612
엘라스틱서치 이해하기 20160612
 
Item10. toString 메소드는 항상 오버라이드 하자
Item10. toString 메소드는 항상 오버라이드  하자Item10. toString 메소드는 항상 오버라이드  하자
Item10. toString 메소드는 항상 오버라이드 하자
 
R 기초 : R Basics
R 기초 : R BasicsR 기초 : R Basics
R 기초 : R Basics
 
Haskell study 2
Haskell study 2Haskell study 2
Haskell study 2
 

En vedette

PoolC LINE 게임 개발 프로젝트 중간 발표 자료
PoolC LINE 게임 개발 프로젝트 중간 발표 자료PoolC LINE 게임 개발 프로젝트 중간 발표 자료
PoolC LINE 게임 개발 프로젝트 중간 발표 자료Do Hoerin
 
Deviewsched 프로젝트 소개서
Deviewsched 프로젝트 소개서Deviewsched 프로젝트 소개서
Deviewsched 프로젝트 소개서Hyemi Ahn
 
NDC12 인디게임 개발 시 주의할 점
NDC12 인디게임 개발 시 주의할 점NDC12 인디게임 개발 시 주의할 점
NDC12 인디게임 개발 시 주의할 점Mingu Heo
 
[MU] 300프로젝트소개서
[MU] 300프로젝트소개서[MU] 300프로젝트소개서
[MU] 300프로젝트소개서Hyunjin Park
 
프로젝트발표Ppt 제작중
프로젝트발표Ppt 제작중프로젝트발표Ppt 제작중
프로젝트발표Ppt 제작중Yung Su Lee
 
최종수정본(스윙 프로젝트 ppt)
최종수정본(스윙 프로젝트 ppt)최종수정본(스윙 프로젝트 ppt)
최종수정본(스윙 프로젝트 ppt)dingo44kr
 
231 프로젝트 소개서
231 프로젝트 소개서231 프로젝트 소개서
231 프로젝트 소개서HONGJOO KIM
 
게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해Seungmo Koo
 
기획서 템플릿
기획서 템플릿기획서 템플릿
기획서 템플릿Jaewon Choi
 
Introducing a presentation
Introducing a presentationIntroducing a presentation
Introducing a presentationNicholas Allen
 

En vedette (11)

PoolC LINE 게임 개발 프로젝트 중간 발표 자료
PoolC LINE 게임 개발 프로젝트 중간 발표 자료PoolC LINE 게임 개발 프로젝트 중간 발표 자료
PoolC LINE 게임 개발 프로젝트 중간 발표 자료
 
Codefolio 소개 ppt
Codefolio 소개 pptCodefolio 소개 ppt
Codefolio 소개 ppt
 
Deviewsched 프로젝트 소개서
Deviewsched 프로젝트 소개서Deviewsched 프로젝트 소개서
Deviewsched 프로젝트 소개서
 
NDC12 인디게임 개발 시 주의할 점
NDC12 인디게임 개발 시 주의할 점NDC12 인디게임 개발 시 주의할 점
NDC12 인디게임 개발 시 주의할 점
 
[MU] 300프로젝트소개서
[MU] 300프로젝트소개서[MU] 300프로젝트소개서
[MU] 300프로젝트소개서
 
프로젝트발표Ppt 제작중
프로젝트발표Ppt 제작중프로젝트발표Ppt 제작중
프로젝트발표Ppt 제작중
 
최종수정본(스윙 프로젝트 ppt)
최종수정본(스윙 프로젝트 ppt)최종수정본(스윙 프로젝트 ppt)
최종수정본(스윙 프로젝트 ppt)
 
231 프로젝트 소개서
231 프로젝트 소개서231 프로젝트 소개서
231 프로젝트 소개서
 
게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해
 
기획서 템플릿
기획서 템플릿기획서 템플릿
기획서 템플릿
 
Introducing a presentation
Introducing a presentationIntroducing a presentation
Introducing a presentation
 

Similaire à 7주차 스터디

Programming java day2
Programming java day2Programming java day2
Programming java day2Jaehoonyam
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304Yong Joon Moon
 
게임프로그래밍입문 7
게임프로그래밍입문 7게임프로그래밍입문 7
게임프로그래밍입문 7Yeonah Ki
 
자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조중선 곽
 
R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1happychallenge
 
Python Programming: Type and Object
Python Programming: Type and ObjectPython Programming: Type and Object
Python Programming: Type and ObjectChan Shik Lim
 
03주차 ddl- table을 만들자
03주차 ddl- table을 만들자03주차 ddl- table을 만들자
03주차 ddl- table을 만들자Yoonwhan Lee
 
이펙티브 C++ 789 공부
이펙티브 C++ 789 공부이펙티브 C++ 789 공부
이펙티브 C++ 789 공부quxn6
 
2014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #72014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #7Chris Ohk
 
G+ Summer C Study 20130712(5일차)
G+ Summer C Study 20130712(5일차)G+ Summer C Study 20130712(5일차)
G+ Summer C Study 20130712(5일차)Jake Yoon
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java유리 하
 
10장 문자열클래스와파일클래스
10장 문자열클래스와파일클래스10장 문자열클래스와파일클래스
10장 문자열클래스와파일클래스웅식 전
 
9 object class
9 object class9 object class
9 object class웅식 전
 
[Swift] Class & Structure
[Swift] Class & Structure[Swift] Class & Structure
[Swift] Class & StructureBill Kim
 
Java mentoring of samsung scsc 0
Java mentoring of samsung scsc   0Java mentoring of samsung scsc   0
Java mentoring of samsung scsc 0도현 김
 

Similaire à 7주차 스터디 (20)

Programming java day2
Programming java day2Programming java day2
Programming java day2
 
강의자료3
강의자료3강의자료3
강의자료3
 
STL study (skyLab)
STL study (skyLab)STL study (skyLab)
STL study (skyLab)
 
3주차 스터디
3주차 스터디3주차 스터디
3주차 스터디
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304
 
게임프로그래밍입문 7
게임프로그래밍입문 7게임프로그래밍입문 7
게임프로그래밍입문 7
 
자바로 배우는 자료구조
자바로 배우는 자료구조자바로 배우는 자료구조
자바로 배우는 자료구조
 
R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1
 
C review
C  reviewC  review
C review
 
Python Programming: Type and Object
Python Programming: Type and ObjectPython Programming: Type and Object
Python Programming: Type and Object
 
03주차 ddl- table을 만들자
03주차 ddl- table을 만들자03주차 ddl- table을 만들자
03주차 ddl- table을 만들자
 
이펙티브 C++ 789 공부
이펙티브 C++ 789 공부이펙티브 C++ 789 공부
이펙티브 C++ 789 공부
 
2014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #72014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #7
 
G+ Summer C Study 20130712(5일차)
G+ Summer C Study 20130712(5일차)G+ Summer C Study 20130712(5일차)
G+ Summer C Study 20130712(5일차)
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
 
10장 문자열클래스와파일클래스
10장 문자열클래스와파일클래스10장 문자열클래스와파일클래스
10장 문자열클래스와파일클래스
 
9 object class
9 object class9 object class
9 object class
 
[Swift] Class & Structure
[Swift] Class & Structure[Swift] Class & Structure
[Swift] Class & Structure
 
Java mentoring of samsung scsc 0
Java mentoring of samsung scsc   0Java mentoring of samsung scsc   0
Java mentoring of samsung scsc 0
 
C++ stl
C++ stlC++ stl
C++ stl
 

7주차 스터디

  • 3. 배열의 한계 배열을 사용하면 변수들이 메모리에 연속적으로 할당되는 점을 이용해 쉽게 여러 개의 변수들을 다룰 수 있다. 배열로는 한 타입의 변수에 대해서만 사용할 수 있다. BUT Int age[100]; // 정수를 저장할 변수 100개를 연속적으로 할당
  • 4. 구조체 (Structure) 구조체는 여러 종류의 자료형들을 자유롭게 모아서 선언하고 사용할 수 있다. 구조체 int Char[10] Double stringbool
  • 5. 구조체 정의 구조체는 사용에 앞서 정의해야 한다. 구조체는 보통 전역으로 정의한다. (main함수 윗 쪽에) 반드시 정의를 하고 나서 세미콜론으로 마무리~ Struct 구조체명 { 자료형 변수명; 자료형 변수명; … }; Struct People { Char name[20]; Char job[20]; Char email[20]; Int age; }; 형식 예시 멤버 변수들
  • 6. 구조체 변수 선언 구조체 변수를 선언한다는 의미는 정의한 구조체의 멤버변수들을 새로운 연속된 공간에 할당한다는 것 변수 people은 People형 구조체 변수이다. 구조체 변수 people은 구조체 People에서 정의한 멤버변수들을 갖는다. 구조체명 변수명; People people; 형식 예시
  • 7. 구조체 변수 선언2 구조체 정의와 함께 변수를 선언 할수도 있다. Struct 구조체명 { 자료형 변수명; 자료형 변수명; … }구조체변수명; Struct People { Char name[20]; Char job[20]; Char email[20]; Int age; }people; 형식 예시
  • 8. 멤버 변수 접근 구조체 변수를 선언하면 해당 변수의 멤버 변수들에 접근할 수 있다. ( . ) 연산자를 이용 구조체변수.멤버변수; people.age; people.name; people.job; 형식 예시
  • 9. 구조체 메모리 할당 Struct Score { Char name[12]; Int kor, eng, math; Double avg; }; Score score; 예시 name kor eng math avg …………. &people &people.name 0 12 16 20 24 32 &people.kor &people.eng Sizeof(people) == ? Sizeof(people.name) == ?
  • 10. 패딩 바이트 Struct Data { Char ch; Int i; Double d; }; Data data; 예시 Sizeof(data) == ? Sizeof(data.ch) == ? Struct Score { Char name[10]; Int kor, eng, math; Double avg; }; Score score; 예시 Sizeof(Score) == ? 메모리에서 값을 읽어올때 32bit (4바이트) 받아온다. (또는 64비트)
  • 11. 패딩 바이트 패딩 바이트가 들어감으로서 구조체의 각 멤버에 접근할 때 메모리를 한 번만 읽어도 되게 보장한다.
  • 12. 구조체 변수 할당 두 구조체 변수가 같은 구조체의 변수라면 할당이 가능한다. 할당의 의미는 멤버변수가 복사되는 것이다. people2의 멤버변수의 값들이 people1의 멤버변수들에 씌워짐 구조체변수 = 구조체변수; people1 = people2; 형식 예시
  • 13. 구조체 변수 배열 선언 구조체도 일반 변수와 같이 배열 선언이 가능함. 그리고 동시에 초기화도 가능함 구조체명 구조체변수[배열 크기]; People people[10]; 형식 예시
  • 15. 구조체와 포인터 People people; People * pointer = &people; people.name == (*p).name == p -> name
  • 16. 학생들의 성적 관리 프로그램을 만드시오 주어진 데이터 : 이름, 3과목의 성적 만들 데이터 : 각 학생의 평균, 과목별 평균 어떻게 데이터를 저장하고 사용할 것인가?
  • 17. Char name_A[12]; Int kor_A, eng_A, math_ A, total_A; Float average_A; Char name_B[12]; Int kor_B, eng_B, math_ B, total_B; Float average_B; Char name_C[12]; Int kor_C, eng_C, math_ C, total_C; Float average_C; 학생들의 성적 관리 프로그램을 만드시오 주어진 데이터 : 이름, 4과목의 성적 (100명) 만들 데이터 : 학생 별 평균, 과목별 평균 < IDEA 1 > 어떻게 데이터를 저장하고 사용할 것인가?
  • 18. Char name[100][12]; Int kor[100]; Int eng[100]; int math[100]; int total[100]; Float average[100]; 학생들의 성적 관리 프로그램을 만드시오 주어진 데이터 : 이름, 4과목의 성적 (100명) 만들 데이터 : 각 학생의 평균, 과목별 평균 < IDEA 2 > 어떻게 데이터를 저장하고 사용할 것인가?
  • 19. Struct student { Char name[12]; Int kor, eng, math, total; Float average; } 학생들의 성적 관리 프로그램을 만드시오 주어진 데이터 : 이름, 4과목의 성적 (100명) 만들 데이터 : 각 학생의 평균, 과목별 평균 < IDEA 3 > 어떻게 데이터를 저장하고 사용할 것인가?
  • 20. 예제 풀어보기1 스터디원들에 대한 구조체 [ 구조체명 : Student , 멤버변수 : 이름 (name), 나이(age), 입학년(year), 사는 곳 (address) ] 를 선언하고 초기화 한후 이름을 입력하면 해당 이름의 모든 멤버변수가 출 력되는 프로그램을 작성하시오