11장 구조체

download report

Transcript 11장 구조체

고급 C 프로그래밍
Chapter 11. 구조체
구조체 정의

구조체



기본 자료형을 묶어서 만든 새로운 형태의 저장 장소
새로운 자료형 선언  새로운 자료형의 변수 선언
구조체 정의
struct 구조체태그명 {
자료형 멤버명1;
자료형 멤버명2;
…
자료형 멤버명n;
};
구조체 정의 예
struct student_info{
char s_no[10];
char name[10];
int grade;
double GPA;
};
struct product{
char SN[10];
int price;
int sales[4];
};
구조체 변수 선언

구조체 변수 선언
struct 구조체 태그명 구조체 변수명;

구조체 변수 선언 예
struct student_info stud;
struct product TV;
구조체 변수 선언 및 초기화

구조체 변수 선언 및 초기화
struct 구조체 태그명 구조체 변수명={멤버초기값1, 멤버초
기값2, …, 멤버초기값n};

구조체 변수 초기화 예
struct student_info stud={“21121103”, “홍길동”, 3, 4.3};
struct produce TV={“TV1209”, 1200000, {250, 300, 290, 350}};
구조체 정의, 변수선언, 초기화

구조체 정의, 변수선언, 초기화를 한번에 하기
struct 구조체태그명 {
자료형 멤버명1;
자료형 멤버명2;
…
자료형 멤버명n;
}구조체 변수명={멤버초기값1, 멤버초기값2, …, 멤버초기값n};
구조체 멤버 참조

구조체 멤버 참조
구조체 변수명.멤버명

구조체 멤버 참조 예
stud.GPA=2.5;
TV.price=3500000;
scanf(“%s”, &stud.name);
printf(“%s\n”, stud.s_no);
구조체 간의 대입

구조체 간의 대입
구조체 변수명1=구조체 변수명2;

구조체 간의 대입 예
struct student_info stud1, stud2, temp;
temp=stud1;
stud1=stud2;
stud2=temp;
구조체 배열

구조체 배열 선언
struct 구조체 태그명 구조체 배열명[원소의 개수];

구조체 배열 선언 및 초기화
struct 구조체 태그명 구조체 배열명[원소의 개수]=
{ {멤버값1, 멤버값2, …, 멤버값n},
{멤버값1, 멤버값2, …, 멤버값n},
…,
{멤버값1, 멤버값2, …, 멤버값n}}
구조체 배열 선언 및 초기화 예

구조체 배열 선언 예
struct student_info stud[3];
struct product TV[10];

구조체 배열 초기화 예
struct student_info stud[5]=
{ {“21121103”, “홍길동”, 3, 4.3},
{“21121104”, “나태희”, 3, 2.5},
{“21121105”, “김해수”, 3, 3.1} };
구조체 배열 원소와 멤버 참조

구조체 배열의 원소 참조


구조체 배열명[첨자]
구조체 배열 원소의 멤버 참조

구조체 배열명[첨자].멤버명
구조체 배열 원소와 멤버 참조 예

구조체 배열 원소 참조 예
struct student_info stud[10], temp;
temp=stud[0];
stud[0]=stud[1];
stud[1]=temp;

구조체 배열 멤버 참조 예
stud[1].GPA=2.3;
scanf(“%s”, &stud[3].name);
printf(“%s\n”, stud[5].s_no);
구조체 포인터

구조체 포인터 선언
struct 구조체 태그명 *구조체 포인터 변수명;
struct student_info *p, *q, stud1, stud2[10];

포인터가 구조체 가리키기
구조체 포인터 변수명=&구조체 변수명;
p=&stud1;
q=stud2;
구조체 포인터를 이용한 간접 참조

구조체 포인터를 통한 멤버 참조
(*구조체 포인터 변수명).멤버명
구조체 포인터 변수명멤버명
(*p).grade=2;
pGPA=2.4;
(*(q+3)).grade=2;
(q+5)GPA=2.3;
함수 간의 구조체 전달

값에 의한 호출 방식

함수 호출
함수명(구조체 인수명);

함수 정의
반환 값 자료형 함수명(struct 구조체 태그명 매개변수명){
//
}
함수 간의 구조체 전달 (2)

주소에 의한 호출 방식

함수 호출
함수명(&구조체 인수명);

함수 정의
반환 값 자료형 함수명(struct 구조체 태그명 *매개변수명){
//
}
함수 간의 구조체 전달 (3)

구조체 배열 전달 : 배열 선언 방식

함수 호출
함수명(구조체 배열명);

함수 정의
반환 값 자료형 함수명(struct 구조체 태그명 배열명[원소 수]){
//
}
함수 간의 구조체 전달 (4)

구조체 배열 전달 : 포인터 선언 방식

함수 호출
함수명(구조체 배열명);

함수 정의
반환 값 자료형 함수명(struct 구조체 태그명 *포인터 변수명){
//
}