Structures Summary.

Slides:



Advertisements
Similar presentations
Copyright © 2008 Wei Qi Xia. All rights reserved. 거시적 영향 발표자:하위기 2008 년 11 월 15 일.
Advertisements

1. 시설관리공단 상임이사 정수기준을 위반한 초과 여부에 대한 질의 2. 졸속사업으로 인한 예산낭비에 대한 질의 (KT 도로개설, 강변역 고구려역사 ]
인천대학교 취업경력개발원 셀프뷰를 활용한 모의면접 및 과제제출. CONTENTS Copyright (c) 2012 EnhanceU Ltd. All Rights Reserved I. 셀프뷰 소개 II. 웹캠 면접녹화 및 과제제출 III. 스마트폰 면접녹화 및 과제제출.
11 주차 : Structures and Unions. 2 Introduction structure 는 다른 타입들의 변수를 모은 타입이며 그 타입들을 structure 의 멤버 라 한다. union 은 다른 타입의 여러 변수들을 하나 의 기억 장소에 보관함으로써 한.
1 Copyright ⓒ C.J. Yoon ALL RIGHTS RESERVED 제 III 부 생산능력.
당장을 걱정할 뿐 다음을 돌아 볼 겨를이 없음. 朝不慮夕(조불려석) 朝 : 아침 조, 慮 : 생각할 려, 夕 : 저녁 석 1.
사회보험 징수통합 관련 조사 결과 보고서 한국갤럽조사연구소
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
로그인 1 케피코 회사 로고를 클릭합니다.
제 11 장 구조체.
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express Slide 1 (of 34)
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
01. 강사 소개 강사 신지식인 선정 한국음식업 중앙회 전남지회 정책자문위원 내셔널 트러스트 문화유산 자문위원
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express Slide 1 (of 25)
Part 12 구조체와 공용체 ©우균, 창병모 ©우균, 창병모.
구조체 활용 구조체 활용.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
8. 객체와 클래스 (기본).
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
구조체 struct 구조체와 함수 구조체의 배열, sizeof 연산자 열거형 enum 형 정의 typedef
6장. printf와 scanf 함수에 대한 고찰
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
head data link data link data link NULL a b c
자료 구조: Chapter 3 (2)구조체, 포인터
8장 포인터.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
변수와 자료형.
12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로.
Copyright by All rights reserved.
Derived Types-- Enumerated, Structure and Union
Arrays 요약.
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
Chapter 10 함수 기본.
Copyright 2011 ㈜굿애플 All rights reserved
산학협력단 연구지원금 시스템 사용자 매뉴얼 Copyrightⓒ2014 UOSICF. All Rights Reserved. 1.
11장 창업과 신생기업 관리 Technology and Management for Engineers
주의(主意) 본 자료는 고사성어100선의 교육자료 데모용입니다. 제품구입시 모든 교육용 자료는 별도로 무상 공급됩니다.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
솔개의 교훈 _ 변화만이 살길이다 “변화” 하지 않는 자는 자연 도태됩니다. 과연 당신은 ……. 현재의 위치에 만족 한 상태로
Chapter 11. 배열과 포인터.
4장 자료형.
Chapter 05. 입출력 함수.
-Part2- 제1장 1차원 배열이란 무엇인가.
Fucntion 요약.
-Part1- 제7장 반복문이란 무엇인가.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
adopted from KNK C Programming : A Modern Approach
하나투어샵 메인 부분 리뉴얼 - 디자인 하나샵 단독 물량 확보! 필리핀 직송 골드 망고 최저가 보장! 37,900원!
자바 5.0 프로그래밍.
지역발전사업 예산 수요조사 계획(안).
원소재유상사급 시스템 사용자 메뉴얼 주식회사 경창
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
中国类型小说海外受追捧, 国内市场类型新作后继乏力
17장. 포인터의 포인터.
어서와 C언어는 처음이지 제23장.
개정판 누구나 즐기는 C언어 콘서트 제11장 구조체, 공용체, 열거형 출처: pixabay.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
C.
3b장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
Presentation transcript:

Structures Summary

Copyright © 2008 W. W. Norton & Company. All rights reserved. structures 어디에 쓰지? 선언은 어떻게 하지? 초기화는 어떻게 하지? 어떻게 활용해? 구조체에 꼬리표를 달면 재사용이 쉽다고? 새로운 형을 내 맘대로 만든다고? 구조체를 함수의 인자 또는 리턴 값으로 받기 구조체 안에 구조체 담기 구조체의 배열 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 구조체 어디에 쓰지? 서로 다른 형의 데이터를 하나의 이름으로 관리 해야 할 때 예: 파일의 변경 시간과 날짜, 파일 크기, 접근 권한 등의 정보를 관리해야 할 때 음악에 대한 정보(작곡가, 작사가, 부른 사람/팀, 길이, 가사 등)를 관리해야 할 때 연락처(이름, 생일, 전화번호1, 전화번호 2, 주소, 메모 등)를 관리해야 할 때 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 구조체의 선언은? 기본 형 (struct 키워드, 구조체로 쓸 변수 명, 이 구조체에서 쓸 멤버 변수들) 서로 다른 구조체의 멤버 변수의 이름은 같아도 상관 없음 struct { int number; float number2; char name[8]; double on_hand; char blue[8]; } part1, part2; Member Record Field Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 선언된 구조체의 메모리 표현? 0x30 struct { int number; float number2; char name[8]; double on_hand; char blue[8]; } part1, part2; 0x2C name 0x28 part2 number2 0x24 number 0x20 0x1C blue 0x18 0x14 on_hand 0x10 part1 0xC name 0x8 number2 0x4 number 0x0 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 주의 struct { int number; float number2; char name[8]; double on_hand; char blue[8]; } part1, part2; part1, part2 는 같은 구조체 partA, partB 는 다른 구조체 Different struct { int number; float number2; char name[8]; double on_hand; char blue[8]; } partA; struct { int number; float number2; char name[8]; double on_hand; char blue[8]; } partB; Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 주의: 예제 1 #include <stdio.h> 2 3 int main(void) 4 { 5 struct { 6 int number; 7 char name[8]; 8 double on_hand; 9 } part1 = {128, "Helen", 3.14}, part2 ; 10 11 struct { 12 int number; 13 char name[8]; 14 double on_hand; 15 } part3 ; 16 17 part2 = part1; 18 part3 = part1; 19 20 int result = part1.number + part2.number + part3.number; 21 printf("%d\n", result); 22 return 0; 23 } Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 구조체 초기화 방법 2 가지 1 선언과 함께 초기화 (예: int foo = 500;) struct { int number; float number2; char name[8]; double on_hand; char blue[8]; } part1 = {528, 3.14, “Helen”, 6.28, “Keller”}, part2 ; 순서 중요! struct { int number; float number2; char name[8]; double on_hand; char blue[8]; } part1 = {.name= “Helen”, .number =7}, part2 ; C99의 경우 일부만 초기화 가능 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 구조체 초기화 방법 2 가지 2 선언 후에 초기화 (예: int foo; foo = 500;) part2.number = 123 ; part2.number2 = 8.01; part2.name = “Will”; part2.on_hand = 909.002; part2.bule = “smith”; 구조체이름.멤버변수이름 = 값; Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 구조체를 어떻게 활용해? 선언과 할당이 완료되면 변수처럼 쓰면 됨 단, 이름이 길 뿐 #include <stdio.h> int main(void) { struct { int number; char name[8]; } part1 = {528, “Helen”}, part2 = {.number = 0} ; int result = part1.number + part2.number; printf(“%d\n”, result); return 0; } Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 꼬리표(tag)를 달면 쓰기 쉽다고? 1 #include <stdio.h> 2 3 int main(void) 4 { 5 struct one { 6 int number; 7 char name[8]; 8 double on_hand; 9 } part1 = {128, "Helen", 3.14}, part2 ; 10 11 struct one part3 ; 12 13 part2 = part1; 14 part3 = part1; 15 16 int result = part1.number + part2.number + part3.number; 17 printf("%d\n", result); 18 return 0; 19 } Tag 정보 같은 구조체란 정보를 알려줌 같은 구조체인 경우 할당을 통해 복사 가능 멤버인 배열의 복사도 간단히 해결할 수 있음 단, 구조체를 복사하는 경우만 가능 Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 구조체를 새로운 형처럼 쓴다고? typedef 라는 키워드를 쓰면 새로운 형을 만들 수 있음 형 정의 키워드 (type definition) 기존의 형 새로운 형 이름 typedef int age; int foo = 5; age bar = 5; // 기존의 형처럼 사용 if(foo == bar) printf(“true\n“); Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 구조체를 새로운 형처럼 쓴다고? 1 #include <stdio.h> 2 3 int main(void) 4 { 5 typedef int OTZ; 6 typedef struct { // 또는 “typedef struct TAG이름 {“ 도 가능 7 OTZ age; 8 char name[10]; 9 } alpha; 10 11 alpha foo = {.age = 10, .name = "helen"}; 12 alpha bar; 13 bar = foo; 14 printf("%d\n", bar.age); 15 return 0; 16 } Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 함수의 인자와 리턴 값은 어떻게 전달해? #include <stdio.h> typedef int OTZ; struct go { OTZ age; char name[10]; } ; struct go sum(struct go one, struct go two) { struct go res; res.age = one.age + two.age; return res; } int main(void) struct go foo = {.age = 10}; struct go bar = {.age = 20}; struct go result; result = sum(foo, bar); printf("%d\n", result.age); return 0; Type I #include <stdio.h> typedef int OTZ; typedef struct { OTZ age; char name[10]; } alpha; alpha sum(alpha one, alpha two) { alpha res; res.age = one.age + two.age; return res; } int main(void) alpha foo = {.age = 10}; alpha bar = {.age = 20}; alpha result; result = sum(foo, bar); printf("%d\n", result.age); return 0; Type II Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 구조체 안에 구조체를 넣는다고? typedef int OTZ; struct Name { char first[10]; char middle[10]; char last[10]; }; typedef struct student{ OTZ id, age; struct Name sname; } sinfo; sinfo students1; typedef int OTZ; typedef struct { OTZ age; char name[10]; } sinfo; // 문자열의 복사 안전한 방법 (string.h 헤더 필요) strcpy(student1.sname.last, ”Gildong”); Copyright © 2008 W. W. Norton & Company. All rights reserved.

Copyright © 2008 W. W. Norton & Company. All rights reserved. 구조체로 배열을 만들 수 있어? typedef int OTZ; struct Name { char first[10]; char middle[10]; char last[10]; }; typedef struct student{ OTZ id, age; struct Name sname; } sinfo; sinfo students1, students2, …; typedef int OTZ; struct Name { char first[10]; char middle[10]; char last[10]; }; typedef struct student{ OTZ id, age; struct Name sname; } sinfo; sinfo students[100]; 보통의 배열 선언처럼 활용 strcpy(students[60].sname.last, ”Giltong”); students[59].sname.last[3] = “d”; 60번째 students 구조체에 last 멤버의 4번째 문자를 d로 변경 Copyright © 2008 W. W. Norton & Company. All rights reserved.