PowerPoint 프레젠테이션

Similar documents
Microsoft PowerPoint - ch07 - 포인터 pm0415

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

설계란 무엇인가?

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

슬라이드 1

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

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

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

Microsoft PowerPoint - 7장 배열 pptx

Microsoft PowerPoint - chap06-2pointer.ppt

02장.배열과 클래스

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

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

11장 포인터

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

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

Infinity(∞) Strategy

Microsoft PowerPoint - chap06-1Array.ppt

설계란 무엇인가?

PowerPoint 프레젠테이션

슬라이드 1

PowerPoint Template

KNK_C_05_Pointers_Arrays_structures_summary_v02

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

슬라이드 1

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

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Data Structure

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

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

untitled

ch15

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

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

K&R2 Reference Manual 번역본

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

Microsoft PowerPoint - 제3장-배열.pptx

11장 포인터

PowerPoint 프레젠테이션

C 언어 프로그래밊 과제 풀이

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

Microsoft PowerPoint - Chapter_04.pptx

09 배열

JAVA PROGRAMMING 실습 02. 표준 입출력

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

Microsoft PowerPoint - 09_C_Language_Pointer_Advanced

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - 05-chap03-ArrayAndPointer.ppt

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

Data Structure

PowerPoint Presentation

Microsoft PowerPoint - Chapter_08.pptx

8장. 포인터

PowerPoint 프레젠테이션

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

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

Microsoft PowerPoint - chap-11.pptx

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

OCW_C언어 기초

PowerPoint Presentation

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Slide 1

untitled

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - 제11장 포인터

BMP 파일 처리

PowerPoint Template

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

C++ Programming

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

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


PowerPoint 프레젠테이션

PowerPoint Presentation

adfasdfasfdasfasfadf

Microsoft PowerPoint - chap06.ppt

4장. 순차자료구조

Microsoft PowerPoint - Chapter14_17.pptx

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

Microsoft PowerPoint - Lesson14.pptx

Microsoft PowerPoint - Lesson14.pptx

chap 5: Trees

슬라이드 1

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

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

歯9장.PDF

C 프로그래밊 개요

본 강의에 들어가기 전

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Microsoft PowerPoint - 06-Pointer and Memory.pptx

슬라이드 1

PowerPoint Presentation

Microsoft PowerPoint - chap06-8 [호환 모드]

컴파일러

기초컴퓨터프로그래밍

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

Transcription:

System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1

배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소 배열의이름은그배열의시작주소를의미 int i0; int i1; int i9; int i[10]; // i[0] ~ i[9] 2

배열선언 자료형이름 [ 크기 ]; 배열번호 ( 인덱스 ) 는항상 0 부터시작 int score[10]; float height[10]; char name[20]; // 10개의 int형값을가지는배열 score // 10개의 float형값을가지는배열 height // 20개의 char형값을가지는배열 name 3

배열접근 int score[10]; score[2] = 91; score score[1] 91 score[0] score[2] score[9] 4

배열초기화 배열의크기가주어지지않으면초기값의개수만큼설정 int score[5] = 10, 20, 30; int score[] = 10, 20, 30; score[1] score 10 20 30 0 0 score[0] score[2] score[1] score 10 20 30 score[0] score[2] 5

배열크기계산 int score[] = 10, 20, 30, 40, 50; int i, size; size = sizeof (score) / sizeof (score[0]); // 4 * 5 / 4 = 5 for (i = 0; i < size; i++) printf( Score: %d n, score[i]); 6

배열과포인터 배열의시작주소를포인터변수에저장가능 int array[3] = 10, 20, 30; int *pointer = array; printf( %d %d n, array[0], pointer[0]); printf( %d %d n, array[1], *(pointer+1)); printf( %d %d n, array[2], pointer[2]); 10 10 20 20 30 30 7

배열과포인터 배열의시작주소는상수형태의주소값으로변경이불가 포인터변수는저장된주소값의변경이가능 name2 에문자열상수 Seokha 의시작주소를저장 name2 에문자열상수 Gyusun 의시작주소를저장 char name[6] = Gyusun ; name = Seokha ; // complie error char *name2 = Seokha ; name2 = Gyusun ; 8

Example - 배열 Array 에 5 개의 float 형데이터를입력받아평균을출력하는프로그램생성 9

배열과함수 배열이인자인경우, 배열원본을전달 배열원본의변경을원치않는경우, const 변수사용 int get_average(int[], int); int score[5] = 10, 20, 30, 40, 50; int average; average = get_average(score, 5); printf( Average: %d n, average); int get_average(int score[], int num) // int get_average(const int score[], int num) int i; int sum = 0; for (i = 0; i < num; i++) sum += score[i]; return 0; return sum / n; 10

다차원배열 선, 면, 입체, 1 차원, 2 차원, 3 차원,... 선언및초기화 score score[2][3] int score[5][5]; int array[2][3] = 1, 2, 3, 4, 5, 6; score[2][3] = 91; score[0][0] score[1][0] score[2][0] score[3][0] score[4][0] 91 11

다차원배열과함수 배열인자의두번째인덱스는반드시기입 #define CLASS 2 #define STUDENTS 5 int get_average(int[][students], int); int score[class][students] = 10, 20, 30, 40, 50, 60, 70, 80, 90, 100; int average; average = get_average(score); printf( Average: %d n, average); return 0; int get_average(int score[][students]) int I, j; int sum = 0; for (i = 0; i < CLASS; i++) for (j = 0; j < STUDENTS; j++) sum += score[i]; return sum / (CLASS * STUDENTS); 12

포인터배열 int num1 = 1, num2 = 2; int *array[2]; array[0] = &num1; array[1] = &num2; 1 2 printf( %d n, *array[0]); printf( %d n, *array[1]); 13

Example 다차원배열 3*3 행렬 2 개를더한행렬을출력 행렬인자하나당 3 칸씩출력을할당 1 2 3 4 5 6 7 8 9 1 2 3 + 4 5 6 =? 7 8 9 14

배열동적할당 RAM malloc(size) 요청한메모리바이트만큼할당 void * 형시작주소를 return char *a = (char *)malloc(sizeof (char) * 4); a[0] = 4; // *a = 4; a[1] = 5; // *(a+1) = 5; a[3] a[2] a[1] a[0] 0x0 15

배열동적할당 RAM calloc(size a, size b) b 사이즈만큼 a 개의메모리할당 모든할당받은메모리를 0 으로초기화 realloc(void *p, size) 메모리공간의확장또는축소 할당된포인터 p 에대해 size 로크기를변경 char *a = (char *)calloc(sizeof (char) * 4); a = (char *)realloc(p, sizeof (char) * 6); 0x0 16

배열동적할당 RAM calloc(size a, size b) b 사이즈만큼 a 개의메모리할당 모든할당받은메모리를 0 으로초기화 realloc(void *p, size) 메모리공간의확장또는축소 할당된포인터 p 에대해 size 로크기를변경 char *a = (char *)calloc(sizeof (char) * 4); a = (char *)realloc(p, sizeof (char) * 6); a[3] a[2] a[1] a[0] 0x0 17

배열동적할당 RAM calloc(size a, size b) b 사이즈만큼 a 개의메모리할당 모든할당받은메모리를 0 으로초기화 realloc(void *p, size) 메모리공간의확장또는축소 할당된포인터 p 에대해 size 로크기를변경 char *a = (char *)calloc(sizeof (char) * 4); a = (char *)realloc(p, sizeof (char) * 6); a[5] a[4] a[3] a[2] a[1] a[0] 0x0 18

배열동적할당 - 다차원 RAM int i = 0; char **a = (char **)malloc(sizeof (char *) * 2); for (i = 0; i < 2; i++) a[i] = (char *)malloc(sizeof (char) * 4); a[0][0] = 4; // *a = 4; a[1][2] = 5; // *(a+1) = 5; a[1][3] a[1][2] a[1][1] a[1][0] a[0][3] a[0][2] a[0][1] a[0][0] 0x0 19