구조체 struct 구조체와 함수 구조체의 배열, sizeof 연산자 열거형 enum 형 정의 typedef

Slides:



Advertisements
Similar presentations
1.1 구조체란 1.2 중첩 구조체 1.3 구조체와 배열 1.4 구조체와 포인터 1.5 구조체와 함수 1.6 공용체와 열거형.
Advertisements

YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
제 3 장 변수와 자료형.
제 11 장 구조체.
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express Slide 1 (of 34)
C++ Espresso 제1장 기초 사항.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express Slide 1 (of 25)
C로 쉽게 풀어쓴 자료구조 © Copyright 생능출판사 2011
C로 쉽게 풀어쓴 자료구조 © Copyright 생능출판사 2005
Part 12 구조체와 공용체 ©우균, 창병모 ©우균, 창병모.
Chapter 12 구조체와 열거형 구조체 열거형.
구조체 활용 구조체 활용.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
4장: 자료형과 수식.
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
Chapter 03 배열, 구조체, 포인터.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
CHAP 3:배열, 구조체, 포인터.
3장. 소켓 주소 구조체 다루기 소켓 주소 구조체의 정의와 초기화 방법을 익힌다.
자료 구조: Chapter 3 (2)구조체, 포인터
8장 포인터.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
동적메모리와 연결리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
기초C언어 제3주 C프로그램 구성요소, 변수와 자료형 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로.
제 2 장 변수와 상수.
프로그래밍2 및 실습 C언어 기반의 C++ 2.
제 3 장 상수와 변수
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
4주차: Data Types and Functions
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
adopted from KNK C Programming : A Modern Approach
Chapter 4 수식과 연산자.
배열과 연결리스트 연결리스트 배열 메모리 할당이 연속적이어서 인덱스 사용시 검색이 빠르다.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
제 3 장 연산자 (Operators).
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 05. 상수와 기본 자료형.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
4장 자료형.
Byte Alignment ㈜ 웰컴정보시스템 김 정 은.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 22. 구조체와 사용자 정의 자료형1.
학습목표 Chapter 2-1. 변수와 포인터 변수의 선언과 변수에 대한 메모리 할당을 살펴본다.
2 배열과 구조.
adopted from KNK C Programming : A Modern Approach
자바 5.0 프로그래밍.
토론을 위한 질문 배열의 이름에는 무엇이 저장되는가? C언어에서 배열 추상데이터의 store는 어떻게 구현 되는가?
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
Structures Summary.
개정판 누구나 즐기는 C언어 콘서트 제11장 구조체, 공용체, 열거형 출처: pixabay.
C.
printf("Global Korea\n");
3b장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
Presentation transcript:

구조체 struct 구조체와 함수 구조체의 배열, sizeof 연산자 열거형 enum 형 정의 typedef 8장 구조체 구조체 struct 구조체와 함수 구조체의 배열, sizeof 연산자 열거형 enum 형 정의 typedef

구조체 구조체(structure) (예) 여러 사람의 학번, 이름, 학과를 저장하는 변수 선언 여러 개의 임의의 자료형의 값들의 모임을 나타내는 자료형 (예) 여러 사람의 학번, 이름, 학과를 저장하는 변수 선언 구조체를 사용하지 않은 경우 int id1, id2, id3; … 학번 char name1[10], name2[10], name3[10]; … 이름 int dept1, dept2, dept3; … 학과코드 구조체를 사용한 경우 struct student { … 구조체 정의 int id; … 학번 char name[10]; … 이름 int dept; … 학과코드 }; struct student p1, p2, p3; … 구조체 변수 선언 C 언어 프로그래밍

구조체 정의 구조체의 사용 구조체 정의 구조체를 사용하기 위해서는 먼저 구조체의 자료 구조를 정의한다. 그 다음에 정의된 구조체의 자료형을 갖는 변수를 선언한다. 구조체 정의 struct student { int id; … 학번 char name[10]; … 이름 int dept; … 학과코드 } ; student  구조체이름, 태그 이름 id, name, dept  구조체 원소, 필드(field), 멤버(member) 빠뜨리지 않도록 주의 C 언어 프로그래밍

구조체 변수 선언 구조체 정의 후 변수 선언 구조체 정의와 함께 변수 선언 struct student person; struct student p1, p2; 구조체 정의와 함께 변수 선언 struct student { int id; char name[10]; int dept; } p1, p2; 이 구조체에 대한 변수 선언이 더 이상 없을 경우에는 태그이름 생략 가능. (권장하지 않음) C 언어 프로그래밍

구조체 정의와 변수 선언과의 관계 C 언어 프로그래밍

구조체 멤버 접근 구조체 멤버 접근: 구조체변수.멤버이름 (멤버연산자 .) (예) 구조체 멤버 접근: 구조체변수.멤버이름 (멤버연산자 .) person.id person.name person.dept p1.id p1.name p1.dept (예) person.id = 20030134; … 학번 초기화 gets(person.name); … 문자열 입력 scanf("%d", &person.dept); … 학과코드 입력 C 언어 프로그래밍

예제 (예 8.1) 두 점 사이의 거리 계산 2차원 좌표를 구조체를 사용하여 나타냄 C 언어 프로그래밍

struct point는 (예8.1)에서 정의된 구조체 중첩된 구조체 중첩된 구조체 구조체의 멤버로서 다른 구조체를 사용할 수 있음 struct triangle { struct triangle { struct point a; 또는 struct point a, b, c; struct point b; }; struct point c; }; 멤버의 접근 struct triangle p; p.a.x = 0; p.a.y = 10; … 구조체 멤버 접근 방법을 … 반복하여 적용 struct point는 (예8.1)에서 정의된 구조체 C 언어 프로그래밍

구조체의 초기화 구조체의 초기화 배열과 같이 { }를 사용하여 선언과 함께 초기화 가능 struct test { int a; 배열과 같이 { }를 사용하여 선언과 함께 초기화 가능 struct test { int a; double f[2]; 5개의 초기값이 필요 struct point p; }; struct test s1 = {1, 2.1, 4.5 , 5, 7 }; struct test s2 = {1, 2.1, 4.5 , 5 }; … s2.p.y = 0 struct test t1 = { 1, {2.1, 4.5}, {5, 7} }; struct test t2 = { 1, {2.1}, {5, 7} }; … t2.f[1] = 0.0 초기값이 멤버 수 보다 적으면 나머지는 0으로 간주됨 a f p C 언어 프로그래밍

예제: 복소수 곱셈 (예 8.2) 두 개의 복소수를 곱하는 프로그램 (a+bi) (c+di) = (ac-bd) + (ad+bc)i } 곱할 복소수 초기화 C 언어 프로그래밍

구조체의 치환과 비교 구조체의 치환은 허용됨 구조체의 비교는 허용되지 않음 구조체의 모든 멤버들이 복사됨 개별적으로 멤버 비교해야 함 struct point p1 = {4.0, 10.0}; struct point p2; p2 = p1; /* 구조체 치환 */ printf("p2: x = %f, y = %f\n", p2.x, p2.y); if (p1.x == p2.x && p1.y == p2.y) /* 구조체 비교: 멤버 별로 */ printf("두 점 p1과 p2는 같다.\n"); C 언어 프로그래밍

구조체와 함수 구조체는 함수의 인수 및 반환 값으로 사용 가능함. (예 8.5) 두 점의 중점의 좌표를 계산하는 함수 인수 및 반환값은 복사되어 전달됨 구조체의 크기가 큰 경우에는 비효율적 (예 8.5) 두 점의 중점의 좌표를 계산하는 함수 인수와 반환값으로 구조체 자료형 사용 호출 함수 피호출 인수값 반환값 C 언어 프로그래밍

예제 (계속) C 언어 프로그래밍

구조체 배열 구조체의 배열 (예) 10명의 학생의 자료를 입력 받아서 역순으로 출력 여러 개의 같은 구조체 자료형의 모임을 나타내는 자료형 (예) 10명의 학생의 자료를 입력 받아서 역순으로 출력 C 언어 프로그래밍

sizeof 연산자 sizeof 연산자 자료형이나 변수에 할당되는 메모리의 크기를 바이트 단위로 알려줌 sizeof(int) … 자료형 int의 크기 sizeof(struct student) … 자료형 struct student의 크기 sizeof(s) … 변수 s의 크기 int a[ ][5] = { … }; sizeof(a) / sizeof(a[0]) … 2차원 배열의 행의 개수 sizeof(a) / (5*sizeof(int)) … 2차원 배열의 행의 개수 struct student s[ ] = { … }; sizeof(s) / sizeof(struct student) … 구조체 배열 s의 원소 개수 sizeof(s) / sizeof(s[0]) ... 구조체 배열 s의 원소 개수 C 언어 프로그래밍

예제: 초기화된 구조체 배열의 검색 (예 8.7) 학번을 1000으로 나누면 입학년도 C 언어 프로그래밍

열거형 enum 열거형(enum) 예: 학과코드 정수형 상수 식별자들로 구성되는 자료형 학과 구분용으로 사용됨 기억하기가 어려우므로 기호상수를 정의하여 사용 #define KOREAN 100 /* 국어국문학과 */ #define ENGLISH 101 /* 영어영문학과 */ #define LAW 200 /* 법학과 */ #define ECONOMY 201 /* 경제학과 */ … struct student s; s.dept = LAW; 열거형을 사용하면 학과코드 이름을 더욱 간편하게 정의할 수 있음 C 언어 프로그래밍

열거형 정의 열거형 정의 열거형 변수 선언 enum deptcode {Korean, English, Law, Economy}; … 상수 식별자에는 0부터 순서대로 정수 값이 부여됨 (0,1,2,3) enum deptcode {Korean=100, English, Law=200, Economy}; … Korean=100, English=101, Law=200, Economy=201 열거형 변수 선언 enum deptcode dept; … 정의된 열거형 변수 선언 enum deptcode {Korean, English, … } dept; … 정의와 함께 선언 struct student { int id; char name[10]; enum deptcode dept; … 구조체 멤버로 정의 }; dept = Korean; … 열거형 상수 식별자를 값으로 사용 C 언어 프로그래밍

예제: 열거형을 사용한 프로그램 (예 8.9) C 언어 프로그래밍

자료형 정의 typedef 자료형 정의 자료형에 새로운 이름을 부여할 수 있음 typedef type newname typedef long int DWORD; typedef short WORD; typedef char BYTE; typedef struct student Student; typedef enum deptcode Deptcode; DWORD a; … long int a; BYTE c; … char c; Student s; … struct student s; Deptcode d; … enum deptcode d; C 언어 프로그래밍

자료형 정의(2) 배열에 대한 자료형 정의 구조체나 열거형을 정의할 때 형 정의를 함께 하면 태그이름 불필요 typedef int vector[10]; …vector는 1차원 정수 배열 typedef int matrix[5][5]; … matrix는 2차원 정수 배열 vector a; … int a[10]; matrix p; … int p[5][5]; 구조체나 열거형을 정의할 때 형 정의를 함께 하면 태그이름 불필요 typedef struct { double x, y; } Point; typedef enum { False=0, True=1 } Bool; Point p, q; … 구조체 Bool cond; … 열거형 C 언어 프로그래밍

예제: 형 정의를 사용한 프로그램 (예 8.10) 배열 구조체 C 언어 프로그래밍

실습 문제 음식 이름, 가격, 판매 수량이 다음과 같다. 짜장면 4000 87 짜장면 4000 87 짬뽕 5000 54 (자료를 더 많이 추가하시오.) 우동 4500 10 … 이 자료를 위한 구조체를 정의하고 구조체 배열을 선언하시오. 음식이름과 가격은 배열 선언과 함께 초기화하고 판매수량은 입력 받아서 저장하시오. 음식의 총 판매 가격을 계산하는 프로그램을 작성하시오. 음식을 가격 순서대로 정렬하여 출력하는 프로그램을 작성하시오. (교재의 구조체 자료 정렬 부분을 참고하시오.) C 언어 프로그래밍