SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
5. 논리적 자료표현 : 구조체
차 례
• 구조체
• 구조체 배열과 포인터
2/21
구조체
• 구조체
– 자료의 논리적 표현 단위
– 사용자가 필요에 의해 여러 자료를 하나의 자
료형으로 정의
– 데이터 베이스의 레코드 형식을 하나의 자료
형으로 정의
3/21
구조체 정의
• 구조체 태그 : 구조체 식별자, 생략 가능함
• 구조체 멤버 : 구조체를 구성하는 항목
• 구조체  하나의 자료형!!
//구조체 선언하여 변수 선언하기1
struct [태그이름]
{
구조체 멤버 선언;
};
struct [태그 이름] 변수이름1, 변수이름2;
//구조체 선언하여 변수 선언하기2
struct [태그이름]
{
구조체 멤버 선언;
} 변수이름1, 변수이름2;
4/21
//일반 변수를 사용한 예
char Name[30]="";
char MPhoneNum[20]="";
//구조체를 정의해서 사용한 예 (태그명이 생략된 예)
struct
{
char Name[30];
char MPhoneNum[20];
} friend;
//구조체를 정의해서 사용한 예 (태그명을 사용한 예)
struct FriendInfo
{
char Name[30];
char MPhoneNum[20];
};
FriendInfo friend;
일반 변수는 변수이름 그대로 사용 :
strcpy_s(Name, 30, “김갑돌”);
구조체형 변수의 멤버 사용 – 구조체 멤버 참조 연산자(.)를 사용함
strcpy_s(friend.Name, 30, “김갑순”);
선언한 변수 :
Name, MPhoneNum
선언한 변수 : friend
소스 5-4 (ch05_02.cpp)
struct
{
char Name[30];
char MPhoneNum[20];
} Friend, Friend1;
strcpy_s(Friend.Name, 30, "김갑돌");
strcpy_s(Friend.MPhoneNum, 20, "010-8741-0000");
Friend1=Friend;
cout << Friend.Name << endl;
cout << Friend.MPhoneNum << endl;
cout << Friend1.Name << endl;
cout << Friend1.MPhoneNum << endl;
구조체를 구조체 멤버로
• 구조체 멤버에 또 다른 구조체형 변수가 멤버
로 사용이 가능함
소스 5-5 (ch05_03.cpp)
struct RECT a;
a.LeftTop.x=10;
a.LeftTop.y=100;
a.RightBottom.x=50;
a.RightBottom.y=15;
a.area=(a.RightBottom.x-a.LeftTop.x)*(a.LeftTop.y-a.RightBottom.y);
cout << "직사각형 면적 : " << a.area << endl;
typedef
• typedef : 이미 정의된 내용을 재정의
• typedef int integer;
 프로그램 코드에서 int를 integer로 사용하
겠다는 의미!!!
• 구조체 선언에서 typedef와 함께 사용하면 프
로그램 코딩이 효율적!!!
struct sam
{
char Name[30];
char MPhoneNum[20];
} ;
struct sam friend1, friend2;
struct sam
{
char Name[30];
char MPhoneNum[20];
} ;
typedef struct sam SAM;
SAM friend1, friend2;
typedef struct sam
{
char Name[30];
char MPhoneNum[20];
} SAM ;
SAM friend1, friend2;
① ②
③
소스 5-7 (ch05_02_3.cpp)
typedef struct sam
{
char Name[30];
char MPhoneNum[20];
} SAM;
SAM Friend, Friend1;
strcpy_s(Friend.Name, 30, "김갑돌");
strcpy_s(Friend.MPhoneNum, 20, "010-8741-0000");
Friend1=Friend;
cout << Friend.Name << endl;
cout << Friend.MPhoneNum << endl;
cout << Friend1.Name << endl;
cout << Friend1.MPhoneNum << endl;
구조체 형 변수 초기화
• 변수 선언시 구조체 멤버 순서에 맞게 값을
할당하여 표시할 수 있음
헤더파일 1
• 헤더파일의 역할
– 프로그램에 필요한 선언 내용
– 예) iostream.h의 경우 프로그램 작성에서 입출력
관련 동작을 수행할때 프로그램 파일에 포함시키
면 간단하게 관련 내용을 컴파일러가 인지함!!
– C++ 표준 라이브러리는 확장자를 명시하지 않는
것을 원칙으로 함 (1998년 표준)
– 프로그램 시작 부분에 #include <헤더파일이름>
으로 포함
헤더파일 2
• 사용자가 작성한 헤더파일은 확장자를 표기
하고 #include “헤더파일이름.h”로 표기
• 구조체는 자료형 선언이므로 일반적으로 헤
더에 포함시키는 것이 적절함!!
헤더파일에 새 항목 “config.h”를 추가하기 (234, 235쪽)
#include <iostream>
#include <string>
using namespace std;
typedef struct
{
char Name[30];
char MPhoneNum[20];
} SAM;
소스 파일 ch05_02_3.cpp 수정하기 (236쪽)
#include "config.h“
int main()
{
SAM Friend;
strcpy_s(Friend.Name, 30, "김갑돌");
strcpy_s(Friend.MPhoneNum, 20, "010-8741-0000");
SAM Friend1;
Friend1=Friend;
cout << Friend.Name << endl;
cout << Friend.MPhoneNum << endl;
cout << Friend1.Name << endl;
cout << Friend1.MPhoneNum << endl;
return 0;
}
구조체 배열
• 구조체 형 배열
– 연속적인 기억장소 할당
소스 5-11 (ch05_04.cpp)
#include <iostream>
using namespace std;
typedef struct
{
char Name[30];
char MPhoneNum[20];
} SAM;
int main()
{
SAM arr[5]={"김갑돌", "010-8741-0000",
"이치수", "010-3456-0000",
"정대호", "010-8765-0000",
"한치욱", "010-1234-0000",
"박사랑", "010-4567-0000"};
int i;
cout << "기본 크기 : " << sizeof(SAM) << endl;
for (i=0; i<5; i++)
cout << "arr[" << i << "]의 주소 : " << &arr[i] << endl;
for (i=0; i<5; i++)
cout << "이름 : " << arr[i].Name << ", 휴대폰 번호 : "
<< arr[i].MPhoneNum << endl;
return 0;
}
구조체 포인터
• 구조체 포인터
– 동일한 구조체형 변수의 주소를 저장
• 구조체 포인터의 멤버 참조
– (*구조체형 포인터 변수).멤버
– 구조체형포인터변수->멤버
소스 5-13 (ch05_05_1.cpp)
typedef struct
{
char Name[30];
char MPhoneNum[20];
} SAM;
int main()
{
SAM a={"김행복", "010-7777-3333"};
SAM *pa;
pa=&a;
cout << "이름 : " << a.Name << endl;
cout << "이름 : " << pa->Name << endl;
cout << "전화번호 : " << pa->MPhoneNum << endl;
return 0;
}

Mais conteúdo relacionado

Destaque

140628 seminar edu.
140628 seminar edu.140628 seminar edu.
140628 seminar edu.Yoonyi Kim
 
Decision making and neuroeconomics workshop
Decision making and neuroeconomics workshopDecision making and neuroeconomics workshop
Decision making and neuroeconomics workshopKyongsik Yun
 
Facebook 자료공유하기
Facebook 자료공유하기Facebook 자료공유하기
Facebook 자료공유하기Ahyoung Kim
 
신기술업무프로세스핵심용어(It비지니스용어집)
신기술업무프로세스핵심용어(It비지니스용어집)신기술업무프로세스핵심용어(It비지니스용어집)
신기술업무프로세스핵심용어(It비지니스용어집)Jay W. Choi
 
Scrum manual taeyang
Scrum manual taeyangScrum manual taeyang
Scrum manual taeyang태양 최
 
초간단스크럼
초간단스크럼초간단스크럼
초간단스크럼Hyun Chang Lee
 
Git extension-training
Git extension-trainingGit extension-training
Git extension-trainingEric Guo
 
One Page Proposal
One Page ProposalOne Page Proposal
One Page ProposalSora Kong
 
제2회 오픈 로보틱스 세미나 (제8세션 로봇 운영체제 ROS 개론)
제2회 오픈 로보틱스 세미나 (제8세션 로봇 운영체제 ROS 개론)제2회 오픈 로보틱스 세미나 (제8세션 로봇 운영체제 ROS 개론)
제2회 오픈 로보틱스 세미나 (제8세션 로봇 운영체제 ROS 개론)Yoonseok Pyo
 
Prototyping Dynamics: sharing multiple designs improves exploration, group ra...
Prototyping Dynamics: sharing multiple designs improves exploration, group ra...Prototyping Dynamics: sharing multiple designs improves exploration, group ra...
Prototyping Dynamics: sharing multiple designs improves exploration, group ra...Yoojung Kim
 
Time, work discipline and industrial capitalism
Time, work discipline and industrial capitalismTime, work discipline and industrial capitalism
Time, work discipline and industrial capitalismYoojung Kim
 
009.Money, Bank, and Central Bank
009.Money, Bank, and Central Bank009.Money, Bank, and Central Bank
009.Money, Bank, and Central BankNamun Cho
 
오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?
오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?
오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?Leonardo YongUk Kim
 
모듈ⅱ. 논리적 사고방법 실습
모듈ⅱ. 논리적 사고방법 실습모듈ⅱ. 논리적 사고방법 실습
모듈ⅱ. 논리적 사고방법 실습Woongseok Yun
 
[NDC13] 크라우드 펀딩 사용 설명서 - AnS의 크라우드 펀딩 사례 분석
[NDC13] 크라우드 펀딩 사용 설명서 - AnS의 크라우드 펀딩 사례 분석[NDC13] 크라우드 펀딩 사용 설명서 - AnS의 크라우드 펀딩 사례 분석
[NDC13] 크라우드 펀딩 사용 설명서 - AnS의 크라우드 펀딩 사례 분석Hyun-ho Lim
 
문서력 향상을 위한 실전 방법론
문서력 향상을 위한 실전 방법론문서력 향상을 위한 실전 방법론
문서력 향상을 위한 실전 방법론용진 최
 

Destaque (20)

140628 seminar edu.
140628 seminar edu.140628 seminar edu.
140628 seminar edu.
 
Decision making and neuroeconomics workshop
Decision making and neuroeconomics workshopDecision making and neuroeconomics workshop
Decision making and neuroeconomics workshop
 
Facebook 자료공유하기
Facebook 자료공유하기Facebook 자료공유하기
Facebook 자료공유하기
 
신기술업무프로세스핵심용어(It비지니스용어집)
신기술업무프로세스핵심용어(It비지니스용어집)신기술업무프로세스핵심용어(It비지니스용어집)
신기술업무프로세스핵심용어(It비지니스용어집)
 
Scrum manual taeyang
Scrum manual taeyangScrum manual taeyang
Scrum manual taeyang
 
초간단스크럼
초간단스크럼초간단스크럼
초간단스크럼
 
Git extension-training
Git extension-trainingGit extension-training
Git extension-training
 
Tensorflow 101
Tensorflow 101Tensorflow 101
Tensorflow 101
 
커뮤니티맵핑 발표자료
커뮤니티맵핑 발표자료커뮤니티맵핑 발표자료
커뮤니티맵핑 발표자료
 
One Page Proposal
One Page ProposalOne Page Proposal
One Page Proposal
 
제2회 오픈 로보틱스 세미나 (제8세션 로봇 운영체제 ROS 개론)
제2회 오픈 로보틱스 세미나 (제8세션 로봇 운영체제 ROS 개론)제2회 오픈 로보틱스 세미나 (제8세션 로봇 운영체제 ROS 개론)
제2회 오픈 로보틱스 세미나 (제8세션 로봇 운영체제 ROS 개론)
 
Prototyping Dynamics: sharing multiple designs improves exploration, group ra...
Prototyping Dynamics: sharing multiple designs improves exploration, group ra...Prototyping Dynamics: sharing multiple designs improves exploration, group ra...
Prototyping Dynamics: sharing multiple designs improves exploration, group ra...
 
jy3
jy3jy3
jy3
 
Time, work discipline and industrial capitalism
Time, work discipline and industrial capitalismTime, work discipline and industrial capitalism
Time, work discipline and industrial capitalism
 
009.Money, Bank, and Central Bank
009.Money, Bank, and Central Bank009.Money, Bank, and Central Bank
009.Money, Bank, and Central Bank
 
오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?
오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?
오픈 소스로 취업하기: 나는 어떻게 오픈 소스를 하다 렘 개발자가 되었나?
 
모듈ⅱ. 논리적 사고방법 실습
모듈ⅱ. 논리적 사고방법 실습모듈ⅱ. 논리적 사고방법 실습
모듈ⅱ. 논리적 사고방법 실습
 
[NDC13] 크라우드 펀딩 사용 설명서 - AnS의 크라우드 펀딩 사례 분석
[NDC13] 크라우드 펀딩 사용 설명서 - AnS의 크라우드 펀딩 사례 분석[NDC13] 크라우드 펀딩 사용 설명서 - AnS의 크라우드 펀딩 사례 분석
[NDC13] 크라우드 펀딩 사용 설명서 - AnS의 크라우드 펀딩 사례 분석
 
Pl
PlPl
Pl
 
문서력 향상을 위한 실전 방법론
문서력 향상을 위한 실전 방법론문서력 향상을 위한 실전 방법론
문서력 향상을 위한 실전 방법론
 

Semelhante a Cp2 w5

05장 논리적 자료표현: 구조체
05장 논리적 자료표현: 구조체05장 논리적 자료표현: 구조체
05장 논리적 자료표현: 구조체유석 남
 
Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web ComponentsEunYoung Kim
 
[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성Lee Sang-Ho
 
[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램
[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램
[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램해강
 
과제#2 색인어 생성기 만들기
과제#2 색인어 생성기 만들기과제#2 색인어 생성기 만들기
과제#2 색인어 생성기 만들기Chang-yong Jung
 
파이썬 크롤링 모듈
파이썬 크롤링 모듈파이썬 크롤링 모듈
파이썬 크롤링 모듈Yong Joon Moon
 
16장. XML 사용하기
16장. XML 사용하기16장. XML 사용하기
16장. XML 사용하기SungHoon Jung
 
10장 문자열 클래스와 파일 클래스
10장 문자열 클래스와 파일 클래스10장 문자열 클래스와 파일 클래스
10장 문자열 클래스와 파일 클래스유석 남
 
09장 객체와 클래스 (고급)
09장 객체와 클래스 (고급)09장 객체와 클래스 (고급)
09장 객체와 클래스 (고급)유석 남
 
코드잇-타스-특강.pdf
코드잇-타스-특강.pdf코드잇-타스-특강.pdf
코드잇-타스-특강.pdf이정환
 
9 object class
9 object class9 object class
9 object class웅식 전
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 Yong Joon Moon
 
01. basic html5
01. basic html501. basic html5
01. basic html5동우 주
 
10장 문자열클래스와파일클래스
10장 문자열클래스와파일클래스10장 문자열클래스와파일클래스
10장 문자열클래스와파일클래스웅식 전
 
안드로이드기초
안드로이드기초안드로이드기초
안드로이드기초hylo926
 

Semelhante a Cp2 w5 (20)

05장 논리적 자료표현: 구조체
05장 논리적 자료표현: 구조체05장 논리적 자료표현: 구조체
05장 논리적 자료표현: 구조체
 
Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web Components
 
[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성
 
Asp.net Razor
Asp.net Razor Asp.net Razor
Asp.net Razor
 
System+os study 4
System+os study 4System+os study 4
System+os study 4
 
[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램
[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램
[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램
 
과제#2 색인어 생성기 만들기
과제#2 색인어 생성기 만들기과제#2 색인어 생성기 만들기
과제#2 색인어 생성기 만들기
 
파이썬 크롤링 모듈
파이썬 크롤링 모듈파이썬 크롤링 모듈
파이썬 크롤링 모듈
 
16장. XML 사용하기
16장. XML 사용하기16장. XML 사용하기
16장. XML 사용하기
 
10장 문자열 클래스와 파일 클래스
10장 문자열 클래스와 파일 클래스10장 문자열 클래스와 파일 클래스
10장 문자열 클래스와 파일 클래스
 
Java script
Java scriptJava script
Java script
 
09장 객체와 클래스 (고급)
09장 객체와 클래스 (고급)09장 객체와 클래스 (고급)
09장 객체와 클래스 (고급)
 
코드잇-타스-특강.pdf
코드잇-타스-특강.pdf코드잇-타스-특강.pdf
코드잇-타스-특강.pdf
 
9 object class
9 object class9 object class
9 object class
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
Git - Level 2
Git - Level 2Git - Level 2
Git - Level 2
 
01. basic html5
01. basic html501. basic html5
01. basic html5
 
18 1 파이썬패키지
18 1 파이썬패키지18 1 파이썬패키지
18 1 파이썬패키지
 
10장 문자열클래스와파일클래스
10장 문자열클래스와파일클래스10장 문자열클래스와파일클래스
10장 문자열클래스와파일클래스
 
안드로이드기초
안드로이드기초안드로이드기초
안드로이드기초
 

Mais de 웅식 전

15 3. modulization
15 3. modulization15 3. modulization
15 3. modulization웅식 전
 
15 2. arguement passing to main
15 2. arguement passing to main15 2. arguement passing to main
15 2. arguement passing to main웅식 전
 
12 2. dynamic allocation
12 2. dynamic allocation12 2. dynamic allocation
12 2. dynamic allocation웅식 전
 
12 1. multi-dimensional array
12 1. multi-dimensional array12 1. multi-dimensional array
12 1. multi-dimensional array웅식 전
 
11. array & pointer
11. array & pointer11. array & pointer
11. array & pointer웅식 전
 
10. pointer & function
10. pointer & function10. pointer & function
10. pointer & function웅식 전
 
7. variable scope rule,-storage_class
7. variable scope rule,-storage_class7. variable scope rule,-storage_class
7. variable scope rule,-storage_class웅식 전
 
5 2. string processing
5 2. string processing5 2. string processing
5 2. string processing웅식 전
 
5 1. character processing
5 1. character processing5 1. character processing
5 1. character processing웅식 전
 
15 1. enumeration, typedef
15 1. enumeration, typedef15 1. enumeration, typedef
15 1. enumeration, typedef웅식 전
 
3 2. if statement
3 2. if statement3 2. if statement
3 2. if statement웅식 전
 
3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib웅식 전
 
2 3. standard io
2 3. standard io2 3. standard io
2 3. standard io웅식 전
 
2 2. operators
2 2. operators2 2. operators
2 2. operators웅식 전
 
2 1. variables & data types
2 1. variables & data types2 1. variables & data types
2 1. variables & data types웅식 전
 

Mais de 웅식 전 (20)

15 3. modulization
15 3. modulization15 3. modulization
15 3. modulization
 
15 2. arguement passing to main
15 2. arguement passing to main15 2. arguement passing to main
15 2. arguement passing to main
 
14. fiile io
14. fiile io14. fiile io
14. fiile io
 
13. structure
13. structure13. structure
13. structure
 
12 2. dynamic allocation
12 2. dynamic allocation12 2. dynamic allocation
12 2. dynamic allocation
 
12 1. multi-dimensional array
12 1. multi-dimensional array12 1. multi-dimensional array
12 1. multi-dimensional array
 
11. array & pointer
11. array & pointer11. array & pointer
11. array & pointer
 
10. pointer & function
10. pointer & function10. pointer & function
10. pointer & function
 
9. pointer
9. pointer9. pointer
9. pointer
 
7. variable scope rule,-storage_class
7. variable scope rule,-storage_class7. variable scope rule,-storage_class
7. variable scope rule,-storage_class
 
6. function
6. function6. function
6. function
 
5 2. string processing
5 2. string processing5 2. string processing
5 2. string processing
 
5 1. character processing
5 1. character processing5 1. character processing
5 1. character processing
 
15 1. enumeration, typedef
15 1. enumeration, typedef15 1. enumeration, typedef
15 1. enumeration, typedef
 
4. loop
4. loop4. loop
4. loop
 
3 2. if statement
3 2. if statement3 2. if statement
3 2. if statement
 
3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib
 
2 3. standard io
2 3. standard io2 3. standard io
2 3. standard io
 
2 2. operators
2 2. operators2 2. operators
2 2. operators
 
2 1. variables & data types
2 1. variables & data types2 1. variables & data types
2 1. variables & data types
 

Cp2 w5

  • 2. 차 례 • 구조체 • 구조체 배열과 포인터 2/21
  • 3. 구조체 • 구조체 – 자료의 논리적 표현 단위 – 사용자가 필요에 의해 여러 자료를 하나의 자 료형으로 정의 – 데이터 베이스의 레코드 형식을 하나의 자료 형으로 정의 3/21
  • 4. 구조체 정의 • 구조체 태그 : 구조체 식별자, 생략 가능함 • 구조체 멤버 : 구조체를 구성하는 항목 • 구조체  하나의 자료형!! //구조체 선언하여 변수 선언하기1 struct [태그이름] { 구조체 멤버 선언; }; struct [태그 이름] 변수이름1, 변수이름2; //구조체 선언하여 변수 선언하기2 struct [태그이름] { 구조체 멤버 선언; } 변수이름1, 변수이름2; 4/21
  • 5. //일반 변수를 사용한 예 char Name[30]=""; char MPhoneNum[20]=""; //구조체를 정의해서 사용한 예 (태그명이 생략된 예) struct { char Name[30]; char MPhoneNum[20]; } friend; //구조체를 정의해서 사용한 예 (태그명을 사용한 예) struct FriendInfo { char Name[30]; char MPhoneNum[20]; }; FriendInfo friend;
  • 6. 일반 변수는 변수이름 그대로 사용 : strcpy_s(Name, 30, “김갑돌”); 구조체형 변수의 멤버 사용 – 구조체 멤버 참조 연산자(.)를 사용함 strcpy_s(friend.Name, 30, “김갑순”); 선언한 변수 : Name, MPhoneNum 선언한 변수 : friend
  • 7. 소스 5-4 (ch05_02.cpp) struct { char Name[30]; char MPhoneNum[20]; } Friend, Friend1; strcpy_s(Friend.Name, 30, "김갑돌"); strcpy_s(Friend.MPhoneNum, 20, "010-8741-0000"); Friend1=Friend; cout << Friend.Name << endl; cout << Friend.MPhoneNum << endl; cout << Friend1.Name << endl; cout << Friend1.MPhoneNum << endl;
  • 8. 구조체를 구조체 멤버로 • 구조체 멤버에 또 다른 구조체형 변수가 멤버 로 사용이 가능함
  • 9. 소스 5-5 (ch05_03.cpp) struct RECT a; a.LeftTop.x=10; a.LeftTop.y=100; a.RightBottom.x=50; a.RightBottom.y=15; a.area=(a.RightBottom.x-a.LeftTop.x)*(a.LeftTop.y-a.RightBottom.y); cout << "직사각형 면적 : " << a.area << endl;
  • 10. typedef • typedef : 이미 정의된 내용을 재정의 • typedef int integer;  프로그램 코드에서 int를 integer로 사용하 겠다는 의미!!! • 구조체 선언에서 typedef와 함께 사용하면 프 로그램 코딩이 효율적!!!
  • 11. struct sam { char Name[30]; char MPhoneNum[20]; } ; struct sam friend1, friend2; struct sam { char Name[30]; char MPhoneNum[20]; } ; typedef struct sam SAM; SAM friend1, friend2; typedef struct sam { char Name[30]; char MPhoneNum[20]; } SAM ; SAM friend1, friend2; ① ② ③
  • 12. 소스 5-7 (ch05_02_3.cpp) typedef struct sam { char Name[30]; char MPhoneNum[20]; } SAM; SAM Friend, Friend1; strcpy_s(Friend.Name, 30, "김갑돌"); strcpy_s(Friend.MPhoneNum, 20, "010-8741-0000"); Friend1=Friend; cout << Friend.Name << endl; cout << Friend.MPhoneNum << endl; cout << Friend1.Name << endl; cout << Friend1.MPhoneNum << endl;
  • 13. 구조체 형 변수 초기화 • 변수 선언시 구조체 멤버 순서에 맞게 값을 할당하여 표시할 수 있음
  • 14. 헤더파일 1 • 헤더파일의 역할 – 프로그램에 필요한 선언 내용 – 예) iostream.h의 경우 프로그램 작성에서 입출력 관련 동작을 수행할때 프로그램 파일에 포함시키 면 간단하게 관련 내용을 컴파일러가 인지함!! – C++ 표준 라이브러리는 확장자를 명시하지 않는 것을 원칙으로 함 (1998년 표준) – 프로그램 시작 부분에 #include <헤더파일이름> 으로 포함
  • 15. 헤더파일 2 • 사용자가 작성한 헤더파일은 확장자를 표기 하고 #include “헤더파일이름.h”로 표기 • 구조체는 자료형 선언이므로 일반적으로 헤 더에 포함시키는 것이 적절함!!
  • 16. 헤더파일에 새 항목 “config.h”를 추가하기 (234, 235쪽) #include <iostream> #include <string> using namespace std; typedef struct { char Name[30]; char MPhoneNum[20]; } SAM;
  • 17. 소스 파일 ch05_02_3.cpp 수정하기 (236쪽) #include "config.h“ int main() { SAM Friend; strcpy_s(Friend.Name, 30, "김갑돌"); strcpy_s(Friend.MPhoneNum, 20, "010-8741-0000"); SAM Friend1; Friend1=Friend; cout << Friend.Name << endl; cout << Friend.MPhoneNum << endl; cout << Friend1.Name << endl; cout << Friend1.MPhoneNum << endl; return 0; }
  • 18. 구조체 배열 • 구조체 형 배열 – 연속적인 기억장소 할당 소스 5-11 (ch05_04.cpp) #include <iostream> using namespace std; typedef struct { char Name[30]; char MPhoneNum[20]; } SAM;
  • 19. int main() { SAM arr[5]={"김갑돌", "010-8741-0000", "이치수", "010-3456-0000", "정대호", "010-8765-0000", "한치욱", "010-1234-0000", "박사랑", "010-4567-0000"}; int i; cout << "기본 크기 : " << sizeof(SAM) << endl; for (i=0; i<5; i++) cout << "arr[" << i << "]의 주소 : " << &arr[i] << endl; for (i=0; i<5; i++) cout << "이름 : " << arr[i].Name << ", 휴대폰 번호 : " << arr[i].MPhoneNum << endl; return 0; }
  • 20. 구조체 포인터 • 구조체 포인터 – 동일한 구조체형 변수의 주소를 저장 • 구조체 포인터의 멤버 참조 – (*구조체형 포인터 변수).멤버 – 구조체형포인터변수->멤버
  • 21. 소스 5-13 (ch05_05_1.cpp) typedef struct { char Name[30]; char MPhoneNum[20]; } SAM; int main() { SAM a={"김행복", "010-7777-3333"}; SAM *pa; pa=&a; cout << "이름 : " << a.Name << endl; cout << "이름 : " << pa->Name << endl; cout << "전화번호 : " << pa->MPhoneNum << endl; return 0; }