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];
형식 예시
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) ]
를 선언하고 초기화 한후 이름을 입력하면 해당 이름의 모든 멤버변수가 출
력되는 프로그램을 작성하시오