구조체 (Structure).

Slides:



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

Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
제2장 C 언어의 확장 C++(1).
구조체란 무엇인가 ? 예: 학생관리 프로그램의 각 학생에 대한 기록(record) 구조체는 여러 자료형 변수들의 집합체이다.
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
제 9 장 구조체와 공용체.
-Part2- 제3장 포인터란 무엇인가.
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
2007 1학기 16 구조체.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
5장. 참조 타입.
C 프로그래밍.
C 프로그래밍.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
23장. 구조체와 사용자 정의 자료형 2.
자료구조 실험 PSLab. 이태호.
14장. 포인터와 함수에 대한 이해.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
공학컴퓨터프로그래밍 Python 염익준 교수.
11장. 1차원 배열.
C#.
C언어: 구조체 (Structures).
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
구조체.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
포인터 1차원 배열과 포인터 2차원 배열과 포인터 문자열 배열과 포인터 포인터 배열
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
8주차: Strings, Arrays and Pointers
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
구조체 배열 실습: 평점이 최고인 학생의 정보를 출력하기
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
데이터 동적 할당 Collection class.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 23. 구조체와 사용자 정의 자료형2.
Chapter 11 구조체.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
제 4 장 Record.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
Visual Basic .NET 기초문법.
Pointers summary.
6 객체.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

구조체 (Structure)

구조체란? 「다른 형」의 데이터를 한데 모은 것 사용자 정의 자료형 (Data type) cf. 배열: 「동일한 형」의 데이터를 한데 모은 것 구조체에 의해 정리된 요소 하나하나를 멤버라고 한다. 사용자 정의 자료형 (Data type) 실세계 모델링에서 중요한 자료형

구조체의 선언 구조체 템플릿 선언 구조체 변수 선언 어떤 변수를 구조체로써 하나로 묶을 것인지 정의하는 일 예: struct employ { // employ : 구조체 템플릿 이름 int no; // 멤버 char name[10]; int age; } ; 구조체 변수 선언 실제 저장공간 확보 예: struct employ kim; // kim : 구조체 변수명

구조체의 활용1 구조체 변수에 대입 구조체 변수 참조 .연산자로 멤버 접근 예: kim.no = 3; strcpy( kim.name, “놀부”); kim.age = 40; 구조체 변수 참조 예: printf(“%d %s\n”, kim.no, kim.name);

구조체의 활용2 구조체 변수간에 대입 구조체내의 구조체 구조체 템플릿 이름이 같을 때, 멤버간 대입 불필요 다시말하며, 구조체 템플릿 구성은 같아도 이름이 다르면 구조체 변수간 대입 불가. 예: struct employ kim, someone; someone = kim; 구조체내의 구조체 예: struct lab { float temperature; int table; struct employ manager; } ;

구조체와 포인터 멤버 접근 외에는 일반 포인터 사용법과 같다 포인터를 사용한 구조체의 참조 예: struct employ kim = { 3, “놀부”, 40 }; // 초기화 struct employ *sp; sp = &kim; // 구조체 포인터 sp가 구조체 변수 kim을 지시하게 된다. 포인터를 사용한 구조체의 참조 연산자로 멤버 참조 예: printf(“%d %s\n”, spno, spname);

구조체와 함수 값의 전달 (Call by Value) 참조 전달 (Call by Reference) 예: struct employ kim; print_employ( kim ); 함수의 원형 선언 : void print_employ( struct employ); 참조 전달 (Call by Reference) 예: struct employ kim, lee; swap( &kim, &lee ); 함수의 원형 선언 : void swap( struct employ*, struct employ*);

구조체의 배열 구조체 배열을 선언할 수 있다. 기본 구문 예: struct employ list[3] { { 1, “놀부”, 40 }, { 2, “흥부”, 38 }, { 3, “홍길동”, 29 } } ; // 구조체 배열의 초기화 기본 구문 예: for( i=0; i<3; i++) { printf( “ %d %s %d\n”, list[ i ].no, list[ i ].name, list[ i ].age); }

Byte Align 구조체에서 아래 구조체와 같이 char a, int b 순으로 선언되면, b는 1B이지만, 그 다음에 3B에 0으로 더 채워진 후 d가 시작된다. (padding) 왜냐하면 int형은 4의 배수 (int 가 32bit 일 경우) 지점에서 시작하도록 되어 있으며, 이를 Byte Align 이라고 한다. ( double형은 8B이고, 8의 배수지점에서 시작 struct balign { char a; int b; } ;

Byte Align 왜? Byte Align 변경 #pragma pack(1) : 1B단위로 Byte Align 실습: sizeof( )로 Byte Align이 바뀌었을 때 구조체의 크기 관찰?

실세계 모델링 버스를 구조체로 구현하시오. 버스의 멤버는 3개로 버스명(문자열), 기름의 양(정수형), 승객 인원수(정수형)이다. 구조체 변수를 생성하고, 3개의 멤버를 화면 입력 받고 출력하는 프로그램을 구현하시오. [적절한 변수명을 줄 것] 입력예: 버스명 > 기름(리터) > 승객(명) > 출력예: 버스명 : 광역버스2000번 기름 : 50 리터 승객 : 15 명

실습과제 (요구사항) 직원 10명의 정보를 입출력 할 수 있는 시스템을 원한다. 입출력은 화면으로 가능하면 된다. 파일 입출력 불필요. 직원 정보는 사번, 이름, 나이 정도면 된다. 직원 정보는 구조체로 구현한다. 일련번호로 검색해서 직원 정보를 보는 기능이 있다. 직원 입력은 신규 인원이 충원될 때 마다 입력하고 싶다.

End