Download presentation
Presentation is loading. Please wait.
Published byBørge Bø Modified 5년 전
1
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 22. 구조체와 사용자 정의 자료형1
2
윤성우의 열혈 C 프로그래밍 Chapter 구조체란 무엇인가? 윤성우 저 열혈강의 C 프로그래밍 개정판
3
구조체의 정의 윤성우의 열혈 C 프로그래밍 int xpos; // 마우스의 x 좌표 int ypos; // 마우스의 y 좌표
마우스의 좌표정보를 저장하고 관리하기 위해서는 x좌표와 y좌표를 저장할 수 있는 두 개의 변수가 필요하다. xpos와 ypos는 서로 독립된 정보를 표현하지 않고 하나의 정보를 표현한다. 따라서 이 둘은 늘 함께한다. struct point // point라는 이름의 구조체 정의 { int xpos; // point 구조체를 구성하는 멤버 xpos int ypos; // point 구조체를 구성하는 멤버 ypos }; 구조체를 이용해서 xpos와 ypos를 하나로 묶었다. 이 둘을 묶어서 point라는 이름의 새로운 자료형을 정의! int가 자료형의 이름인것 처럼 point도 자료형의 이름이다. 단, 프로그래머가 정의한 자료형이기에 ‘사용자 정의 자료형(user defined data type)’이라 한다. struct person { char name[20]; // 이름 저장 char phoneNum[20]; // 전화번호 저장 int age; // 나이 저장 }; 개인의 이름과 전화번호 나이 정보를 person이라는 구조체 정의를 통해서 묶고 있다. 배열도 구조체의 멤버로 선언이 가능!
4
구조체 변수의 선언과 접근 윤성우의 열혈 C 프로그래밍 struct type_name val_name ;
구조체 변수선언의 기본 형태 멤버의 접근방식 struct type_name val_name ; 구조체 변수의 이름 . 구조체 멤버의 이름 struct point pos; struct person man; pos.xpos=20; printf("%s \n", man.name); 구조체 변수 pos의 멤버 xpos에 20을 저장 구조체 변수선언의 예 man의 멤버 name에 저장된 문자열 출력 구조체 변수선언의 결과
5
구조체 변수의 선언과 접근관련 예제1 윤성우의 열혈 C 프로그래밍
이 예제에서 호출하는 함수 sqrt는 제곱근을 반환하는 함수로써 헤더파일 math.h에 선언된 수학관련 함수이다. 실행결과
6
구조체 변수의 선언과 접근관련 예제2 윤성우의 열혈 C 프로그래밍
구조체의 멤버라 하더라도 일반적인 접근의 방식을 그대로 따른다. 구조체의 멤버로 배열이 선언되면 배열의 접근방식을 취하면 되고, 구조체의 멤버로 포인터 변수가 선언되면 포인터 변수의 접근방식을 취하면 된다. 실행결과
7
구조체 정의와 동시에 변수 선언하기 윤성우의 열혈 C 프로그래밍
point라는 이름의 구조체를 정의함과 동시에 point 구조체의 변수 pos1, pos2, pos3를 선언하는 문장이다. 위와 동일한 결과를 보이는 구조체의 정의와 변수의 선언이다. 구조체를 정의함과 동시에 변수를 선언하는 문장은 잘 사용되지 않는다. 그러나 문법적으로 지원이 되고 또 간혹 사용하는 경우도 있다.
8
구조체 변수의 초기화 윤성우의 열혈 C 프로그래밍 초기화 방식이 배열과 유사하다.
초기화 할 데이터들을 중괄호 안에 순서대로 나열하면 된다. . 실행결과
9
Chapter 22-2. 구조체와 배열 그리고 포인터
윤성우의 열혈 C 프로그래밍 Chapter 구조체와 배열 그리고 포인터 윤성우 저 열혈강의 C 프로그래밍 개정판
10
구조체 배열의 선언과 접근 윤성우의 열혈 C 프로그래밍 struct point arr[4]; 선언된 배열의 형태 실행결과
길이가 4인 구조체 배열의 선언방법 선언된 배열의 형태 실행결과
11
구조체 배열의 초기화 윤성우의 열혈 C 프로그래밍 구조체 변수의 초기화
struct person man={"이승기", " ", 21}; 구조체 변수의 초기화 구조체 변수 하나를 초기화하기 위해서 하나의 중괄호를 사용하듯이... struct person arr[3]={ {"이승기", " ", 21}, // 첫 번째 요소의 초기화 {"정지영", " ", 22}, // 두 번째 요소의 초기화 {"한지수", " ", 19} // 세 번째 요소의 초기화 }; 구조체 배열의 초기화 구조체 배열을 초기화하기 위해서 배열요소 각각의 초기화 값을 중괄호로 묶어서 표현한다.
12
윤성우의 열혈 C 프로그래밍 구조체 배열의 초기화 예제 실행결과
13
구조체 변수와 포인터 윤성우의 열혈 C 프로그래밍 구조체 point의 포인터 변수 선언
pptr이 가리키는 구조체 변수의 멤버 xpos에 접근 pptr이 가리키는 구조체 변수의 멤버 ypos에 접근 구조체 포인터 변수를 대상으로 하는 포인터 연산 및 멤버의 접근방법 -> 연산자를 기반으로 하는 구조체 변수의 멤버 접근 방법
14
구조체 변수와 포인터 관련 예제 윤성우의 열혈 C 프로그래밍 실행결과
프로그래머들이 주로 사용하는 연산자이니 -> 연산자의 사용에 익숙해지자. 실행결과
15
포인터 변수를 구조체의 멤버로 선언하기1 윤성우의 열혈 C 프로그래밍
구조체 변수의 멤버로 구조체 포인터 변수가 선언될 수 있다! 실행결과
16
포인터 변수를 구조체의 멤버로 선언하기2 윤성우의 열혈 C 프로그래밍
type형 구조체 변수의 멤버로 type형 포인터 변수를 둘 수 있다. 실행결과
17
구조체 변수와 첫 번째 멤버의 주소 값 윤성우의 열혈 C 프로그래밍
구조체 변수의 주소 값과 구조체 변수의 첫 번째 멤버의 주소 값은 일치한다. 응용 프로그램 분야에서는 이 사실을 이용해서 프로그램을 작성하기도 한다. 실행결과
18
Chapter 22가 끝났습니다. 질문 있으신지요?
Similar presentations