<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

Similar documents
11장 포인터

PowerPoint Template

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

슬라이드 1

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

K&R2 Reference Manual 번역본


Microsoft PowerPoint - Chapter14_17.pptx

Microsoft PowerPoint - Lesson14.pptx

Microsoft PowerPoint - Lesson14.pptx

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

Microsoft PowerPoint - chap11-포인터의활용.pptx

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

기초컴퓨터프로그래밍

untitled

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Microsoft PowerPoint - chap10-함수의활용.pptx

설계란 무엇인가?

C++-¿Ïº®Çؼ³10Àå

Chapter 4. LISTS

Chapter 4. LISTS

슬라이드 1

chap8.PDF

Microsoft PowerPoint - chap12-고급기능.pptx

본 강의에 들어가기 전

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - Chapter_09.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - 제11강 파일 처리

Chapter 4. LISTS

chap 5: Trees

윤성우의 열혈 TCP/IP 소켓 프로그래밍

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

C 프로그래밊 개요

untitled

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch07 - 포인터 pm0415

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi


PowerPoint 프레젠테이션

untitled

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

금오공대 컴퓨터공학전공 강의자료

02장.배열과 클래스

Lab 5. 실습문제 (Double linked list)-1_해답.hwp

Microsoft PowerPoint - ch08 - 구조체 (structure) am0845

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

11장 포인터

chap7.key

ABC 10장

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap-11.pptx

03장.스택.key

Microsoft PowerPoint - 제9강 문자열

Microsoft PowerPoint - 제3장-배열.pptx

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - ch 전처리기, 다중 소스파일 pm1015

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - 자료구조2008Chap06

untitled

중간고사 (자료 구조)

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

Microsoft PowerPoint - 07_(C_Programming)_(Korean)_Composite_Data_Types

PowerPoint 프레젠테이션

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - Chapter_08.pptx

문서의 제목 나눔명조R, 40pt

Microsoft PowerPoint - ch07 - 포인터 pm0415


Line (A) å j a k= i k #define max(a, b) (((a) >= (b))? (a) : (b)) long MaxSubseqSum0(int A[], unsigned Left, unsigned Right) { int Center, i; long Max

ABC 6장

11장 포인터

06장.리스트

歯9장.PDF

Infinity(∞) Strategy

Microsoft PowerPoint - 06-Pointer and Memory.pptx

슬라이드 1

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - 08_(C_Programming)_(Korean)_Preprocessing

untitled

리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : ( ㄱ, ㄴ

중간고사

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

8장. 포인터

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - 05-chap03-ArrayAndPointer.ppt

C# Programming Guide - Types

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

Microsoft PowerPoint - chap06-2pointer.ppt

CHAP 3:배열, 구조체, 포인터

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

C 언어 강의노트

설계란 무엇인가?

14 주차구조체와공용체

Transcription:

제14장 동적 메모리 할당

Dynamic Allocation void * malloc(sizeof(char)*256) void * calloc(sizeof(char), 256) void * realloc(void *, size_t); Self-Referece NODE struct selfref { int n; struct selfref *next; }; Linked List struct linked_list { char *name; struct linked_list *next; }; typedef struct linked_list NODE; typedef NODE * LINK ; 한밭대정보통신공학과 и чунг хо 2

스택영역 ( 형식매개변수, 지역변수 ): 작은주소값 데이터영역 ( 전역변수, 정적변수 ): 중간주소값 Heap 영역 ( 동적할당변수 ): 큰주소값영역 동적메모리할당은 Heap 영역에대량의메모리를확보 #include <stdlib.h> // 포함시켜야할헤더 void *malloc(sizeof(data type)* 개수 ); void *calloc( 개수,sizeof(data type)); void *realloc(void *, size_t); 한밭대정보통신공학과 и чунг хо 3

void *malloc(sizeof(data type)* 개수 ); int a[5]={0,1,2,3,4}; 위와같은것을 malloc() 으로같은효과를주려면 int *pi, i; pi = (int *) malloc(sizeof(int)*5); for(i=0;i<5;i++) pi[i]=i; free(pi); 한밭대정보통신공학과 и чунг хо 4

//1 에서 6 까지의주사위값으로생성하는프로그램 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int *p, n, i; printf("input n: "); scanf("%d", &n); p=(int *)malloc(sizeof(int)*n);// 입력 n 크기만큼동적배열생성 srand(time(null)); // 실행시마다다른결과가나타나도록함. for(i=0;i<n;i++) printf("%1d ", rand()%6+1); // 랜덤한주사위값이나오도록함. return 0; } 한밭대정보통신공학과 и чунг хо 5

#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int **p, rows, cols, i,j; printf("input rows cols: "); scanf("%d%d", &rows, &cols); p=(int **)malloc(sizeof(int *)*(rows+1)); // 각행의포인터수만큼확보 for(i=0;i<rows;i++) p[i]=(int *)malloc(sizeof(int)*cols);// 각행의원소의수만큼 p[i]=null; //row+1의 1에해당하는부분의마지막을 NULL로채움. srand(time(null)); // 실행시마다다른결과를내도록함. for(i=0;i<rows;i++) for(j=0;j<cols;j++) p[i][j]= rand()%10; //0에서 9까지의랜덤한수로채움. for(i=0;i<rows;i++){ // 프린트하는부분 for(j=0;j<cols;j++) printf("%2d ", p[i][j]); printf("\n"); } 한밭대정보통신공학과 и чунг хо 6

void *calloc( 개수,sizeof(data type)); calloc() 은 0 으로초기화시키고, malloc() 보다속도가빠르다. int a[5]={0,1,2,3,4}; 위와같은것을 calloc() 으로같은효과를주려면 int *pi, i; pi = (int *) calloc(5, sizeof(int)); for(i=0;i<5;i++) pi[i]=i; free(pi); 한밭대정보통신공학과 и чунг хо 7

void *realloc(void *, size_t); // 초기화 0 으로안됨 int *pi, *repi, i; pi = (int *) calloc(5, sizeof(int)); for(i=0;i<5;i++) pi[i]=i; //0 1 2 3 4 repi = (int *)realloc(pi, 7*sizeof(int)); for(i=5;i<7;i++) pi[i]=i; //5 6 free(pi); 한밭대정보통신공학과 и чунг хо 8

데이터와포인터를포함하는구조체 포인터가다름구조체를가리키도록함 형태 struct selfref { int data; struct selfref *next; }; typedef struct selfref list; 한밭대정보통신공학과 и чунг хо 9

데이터와포인터를포함하는구조체 first = (list *)malloc(sizeof(list)); second = (list *)malloc(sizeof(list)); first->data = 100; second->data = 200; second->next = NULL first->next = second; 한밭대정보통신공학과 и чунг хо 10

자기참조구조체이용 헤드 : 연결리스트의첫번째원소, 마지막원소는 NULL 형태 struct LikedList { char *str; struct list *next; }; typedef struct LinkedList NODE; typedef NODE *LINK; 한밭대정보통신공학과 и чунг хо 11

LINK cur; char str[] = C++ ; // 복사해넣을내용 cur = (NODE *)malloc(sizeof(node)); cur->str =(char*)malloc(sizeof(char)*(strlen(str)+1)); strcpy(cur->data, str); // 문자열을데이터에복사 cur->next = NULL; //append 할것이므로항상맨마지막이됨. 다른노드를연결하려면다른구조체를가리키도록대입하면됨. 한밭대정보통신공학과 и чунг хо 12

자기참조구조체를한개만들고이를 cur 라한다. Append() 라는함수를이용하여데이터가없으면맨앞에추가한다. 이미다른데이터가있으면연결리스트의끝을찾아서맨뒤에추가한다. 마지막노드를찾아가는방법 LINK nextnode = head; if(head==null) // 연결리스트에노드가없으면추가 { head = cur; return head; } 한밭대정보통신공학과 и чунг хо 13

연결리스트에노드가있으면 while (nextnode->next!=null) // { nextnode = nextnode->next; } nextnode->next = cur; 한밭대정보통신공학과 и чунг хо 14

#include <stdio.h> int main() { printf(" 경로 : %s\n", FILE ); printf(" 컴파일시각 :%s\n", TIME ); printf(" 컴파일년월일 :%s\n", DATE ); printf(" 줄번호 : %d\n", LINE ); return 0; } 한밭대정보통신공학과 и чунг хо 15

운영체제등의환경이다를때손쉽게이를맞춰주려고할때사용 #if SYSTEM == WINDOWS #include stdio.h #elif SYSTEM == MAC //else if 의의미 #incude vax.h #elif SYSTEM == UNIX #include unix.h #else #include etc.h #endif 한밭대정보통신공학과 и чунг хо 16

#define DEBUG #ifdef DEBUG // 여기에있는부분을실행한다. #endif //#define DEBUG 가정의되어있지않으면 //#ifdef DEBUG 에서 #endif 사이가컴파일되지않 // 는다. #ifndef //if not define 의의미 #ifdef 과반대의미예 ) #ifndef LIMIT #define LIMIT 256 #endif 한밭대정보통신공학과 и чунг хо 17

#define 의해지 #define LIMIT 256 #undef LIMIT 복잡한전처리기지시자는잘쓰이지않으므로필요시책을참고하기바람. 한밭대정보통신공학과 и чунг хо 18

Dynamic Allocation 구조체 Structure void * malloc(sizeof(char)*256) Struct TAGNAME { int a; double b; char c[12];} s; void * calloc(sizeof(char), 256) Allocation of Initial Value void * realloc(void *, size_t); Structure Array Reference of Structure Members Self-Referece NODE struct selfref { }; 공용체 Union int n; Union struct TAGNAME selfref *next; { int a; double b; char c[12];} Data usage, length of union Linked List 열거형 Enum struct linked_list { }; enum color {yellow, red, blue, magenta, green} col; *next; char *name; struct linked_list typedef struct linked_list NODE; typedef NODE * LINK ; 한밭대정보통신공학과 и чунг хо 19