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

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

슬라이드 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06-1Array.ppt

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

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

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

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

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

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

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - chap06-2pointer.ppt

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

설계란 무엇인가?

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

KNK_C_05_Pointers_Arrays_structures_summary_v02

02장.배열과 클래스

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

11장 포인터

C 프로그래밊 개요

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

Microsoft PowerPoint - 7장 배열 pptx

PowerPoint Presentation

OCW_C언어 기초

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

untitled

ch15

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

PowerPoint Template

Data Structure

untitled

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - 제3장-배열.pptx

슬라이드 1

PowerPoint 프레젠테이션

Data Structure

PowerPoint 프레젠테이션

설계란 무엇인가?

£01¦4Àå-2

½ºÅ丮ÅÚ¸µ3_³»Áö

272*406OSAKAÃÖÁ¾-¼öÁ¤b64ٽÚ

PART

Part Part

PowerPoint Presentation

PowerPoint 프레젠테이션

untitled

Infinity(∞) Strategy

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

11장 포인터

슬라이드 1

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

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

Microsoft PowerPoint - chap05-제어문.pptx

8장. 포인터

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

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

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

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

Microsoft PowerPoint - 제11장 포인터

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

Microsoft PowerPoint - 09_C_Language_Pointer_Advanced

슬라이드 1

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

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

C 프로그래밊 개요

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - Chapter_08.pptx

PowerPoint Presentation

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

Infinity(∞) Strategy

Microsoft PowerPoint - ch07 - 포인터 pm0415

OCW_C언어 기초

歯7장.PDF

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


: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print

C++ Programming

Microsoft PowerPoint - CSharp-2-기초문법

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - Java7.pptx

슬라이드 1

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

PowerPoint 프레젠테이션

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

%eb%8f%99%ec%9d%b8-[NO_09]%20%ec%9d%98%ea%b3%bc%eb%8c%80%ed%95%99%20%ec%86%8c%ec%8b%9d%ec%a7%80_F(%ec%b5%9c%ec%a2%85)-2.pdf

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

Microsoft PowerPoint - ch06 - 배열, 동적배열, 정렬 pm0200

Microsoft PowerPoint - chap04-연산자.pptx

PowerPoint Presentation

중간고사

2015 경제ㆍ재정수첩

Transcription:

- Part2- 제 2 장다차원배열이란무엇인가

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

2.1 다차원배열이란

2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3] 면행열 3 열 3 열 2 행 12 행 4 행 2 행 48 바이트 == 4 * 4 * 3 3 열 48 바이트 == 4 * 12 48 바이트 == 4 *2 * 2 * 3

2 차원배열의선언 ü 자료형 : 배열의자료형을지정 2.1 다차원배열이란 (2/14) ü 배열이름 : 변수이름과마찬가지로배열을구분하는배열의이름 ü 배열길이 : 배열요소의길이를행 ( 가로 ) 과열 ( 세로 ) 로지정

2.1 다차원 배열이란 (3/14) 2차원 배열의 선언 ü 행과 열을 지정 #include <stdio.h> int main(void) { // 2차원 배열의 선언 int array[4][3]; return 0; }

2.1 다차원배열이란 (4/14)- - - [2-1.c 실습 ] #include<stdio.h> int main(void) { // 2 차원배열의선언 int array[4][3]; // 4 행 3 열의배열길이선언 } array[0][0]=1; array[0][1]=2; array[0][2]=3; array[1][0]=4; array[1][1]=5; array[1][2]=6; array[2][0]=7; array[2][1]=8; array[2][2]=9; array[3][0]=10; array[3][1]=11; array[3][2]=12; prini("%d %d %d \n",array[0][0], array[0][1], array[0][2]); // 0 행출력 prini("%d %d %d \n",array[1][0], array[1][1], array[1][2]); // 1 행출력 prini("%d %d %d \n",array[2][0], array[2][1], array[2][2]); // 2 행출력 prini("%d %d %d \n",array[3][0], array[3][1], array[3][2]); // 3 행출력 return 0;

2.1 다차원 배열이란 (5/14)- - - [2-1.c 분석] int array[4][3]; array[0][0]=1; array[0][1]=2; array[0][2]=3; // 0행의 배열 요소들에 데이터 저장 array[1][0]=4; array[1][1]=5; array[1][2]=6; // 1행의 배열 요소들에 데이터 저장 array[2][0]=7; array[2][1]=8; array[2][2]=9; // 2행의 배열 요소들에 데이터 저장 array[3][0]=10; array[3][1]=11; array[3][2]=12; // 3행의 배열 요소들에 데이터 저장

2.1 다차원배열이란 (6/14)- - - [2-2.c 실습 ] #include<stdio.h> int main(void) { // 2 차원배열선언과동시에데이터저장 ( 초기화 ) int array1[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int array2[4][3]={1,2,3,4,5}; // 2 차원배열 array1 의데이터출력 prini("%d %d %d \n",array1[0][0], array1[0][1], array1[0][2]); // 0 행출력 prini("%d %d %d \n",array1[1][0], array1[1][1], array1[1][2]); // 1 행출력 prini("%d %d %d \n",array1[2][0], array1[2][1], array1[2][2]); // 2 행출력 prini("%d %d %d \n",array1[3][0], array1[3][1], array1[3][2]); // 3 행출력 prini("- - - - - - - - - - - - - - - - - - - - \n"); // 2 차원배열 array2 의데이터출력 prini("%d %d %d \n",array2[0][0], array2[0][1], array2[0][2]); // 0 행출력 prini("%d %d %d \n",array2[1][0], array2[1][1], array2[1][2]); // 1 행출력 prini("%d %d %d \n",array2[2][0], array2[2][1], array2[2][2]); // 2 행출력 prini("%d %d %d \n",array2[3][0], array2[3][1], array2[3][2]); // 3 행출력 return 0; }

2.1 다차원 배열이란 (7/14)- - - [2-2.c 분석]

2.1 다차원배열이란 (8/14)- - - [2-3.c 실습 ] #include<stdio.h> int main(void) { int array1[4][3]={{1,2},{3},{4},{5}}; int array2[4][3]={{1,2,3},{4,5,6},{7,8,9},{10}}; } prini("%d %d %d \n",array1[0][0], array1[0][1], array1[0][2]); prini("%d %d %d \n",array1[1][0], array1[1][1], array1[1][2]); prini("%d %d %d \n",array1[2][0], array1[2][1], array1[2][2]); prini("%d %d %d \n",array1[3][0], array1[3][1], array1[3][2]); prini("- - - - - - - - - - - - - - - - - - - - \n"); prini("%d %d %d \n",array2[0][0], array2[0][1], array2[0][2]); prini("%d %d %d \n",array2[1][0], array2[1][1], array2[1][2]); prini("%d %d %d \n",array2[2][0], array2[2][1], array2[2][2]); prini("%d %d %d \n",array2[3][0], array2[3][1], array2[3][2]); return 0;

2.1 다차원 배열이란 (9/14)- - - [2-3.c 분석] // 행 단위로 2차원 배열의 선언 과 동시 초기화

2.1 다차원 배열이란 (10/14)- - - [2-4.c 실습] #include<stdio.h> int main(void) { // 2차원 배열의 선언 int array[2][2]; int i,j; // 2차원 배열에 데이터 입력 for(i=0;i<2;i++) { for(j=0; j<2; j++) { prini("정수를 입력하세요: "); scanf("%d", &array[i][j]); } } //2차원 배열에 데이터 출력 for(i=0;i<2;i++) { for(j=0; j<2; j++) { print("%3d",array[i][j]); } prini("\n"); } return 0; }

2 차원배열선언시주의사항 ü 열의길이는반드시설정 2.1 다차원배열이란 (11/14) int array1[ ][ ]={1, 2, 3, 4, 5, 6,,7,8,9, 10, 11, 12}; // 에러 int array2[4][ ]={1, 2, 3, 4, 5, 6,,7,8,9, 10, 11, 12}; // 에러 int array3[ ][3]={1, 2, 3, 4, 5, 6,,7,8,9, 10, 11, 12}; // 정상 int array 4[ ][4]={1, 2, 3, 4, 5, 6,,7,8,9, 10, 11, 12}; // 정상 int array5[ ][2]={1, 2, 3, 4, 5, 6,,7,8,9, 10, 11, 12}; // 정상

2.1 다차원배열이란 (12/14) 2 차원배열의물리적메모리구조 int array1[2][3] = {1, 2, 3, 4, 5, 6}; array[0][0] array[0][1] array[0][0] array[0][1] array[0][2] array[0][2] array[1][0] array[1][1] array[1][2] 이렇게이해하자! array[1][0] array[1][1] array[1][2] 2 차원메모리구조 물리적메모리구조

3 차원배열의이해 2.1 다차원배열이란 (13/14)

2.1 다차원배열이란 (14/14)- - - [2-5.c 실습 ] int i, j, k; int array[3][3][3]={ {1,2,3,4,5,6,7,8,9}, {10,11,12,13,14,15,16,17,18}, {19,20,21,22,23,24,25,26,27} }; for(i=0; i<3; i++) // 0 면, 1 면, 2 면 { for(j=0; j<3; j++) // 0 행, 1 행, 2 행 { for(k=0; k<3; k++) // 0 열, 1 열, 2 열 { print("%d ", array[i][j][k]); } print("\n"); } print("- - - - - - - - - - - - - - - \n"); }

2.2 2 차원배열의주소와값의참조

2.2 2 차원배열의주소와값의참조 (1/19) & 연산자 ü 2 차원배열요소의주소를참조하는연산자이다. int array[2][2]={10,20,30,40}; 2 차원배열의주소표현 사용법 : &2 차원배열요소 print("%x %x \n", &array[0][0], &array[0][1]); print("%x %x \n", &array[1][0], &array[1][1]);

2.2 2 차원배열의주소와값의참조 (2/19)- - - [2-6.c 실습 ] #include<stdio.h> int main(void) { int array[2][3]={1,2,3,4,5,6}; prini("%x %x %x \n", &array[0][0],&array[0][1],&array[0][2]); prini("%x %x %x \n", &array[1][0],&array[1][1],&array[1][2]); return 0; }

2.2 2 차원배열의주소와값의참조 (3/19)- - - [2-6.c 분석 ] int array[2][3]={1,2,3,4,5,6}; prini("%x %x %x \n", &array[0][0],&array[0][1],&array[0][2]); prini("%x %x %x \n", &array[1][0],&array[1][1],&array[1][2]);

2.2 2 차원배열의주소와값의참조 (4/19) 2 차원배열의다양한주소표현 1 2 차원배열이름은 2 차원배열의시작주소이다. 2 2 차원배열의행의요소는행을대표하는주소이다. 3 2 차원배열에서 array[i] == *(array+i) 는주소이다.

2.2 2 차원배열의주소와값의참조 (5/19)- - - [2-7.c 실습 ] 2 차원배열의다양한주소표현 1 2 차원배열이름은 2 차원배열의시작주소이다. #include<stdio.h> int main(void) { int array[2][2] = {10,20,30,40}; prini("%x %x \n", array, array+0); // 0행의주소 prini("%x \n", array+1); // 1행의주소 } return 0;

2.2 2차원 배열의 주소와 값의 참조 (6/19)- - - [2-7.c 분석]

2.2 2 차원배열의주소와값의참조 (7/19)- - - [2-8.c 실습 ] 2 차원배열의다양한주소표현 2 2 차원배열의행의요소는행을대표하는주소이다. #include<stdio.h> int main(void) { int array[2][2] = {10,20,30,40}; prini("%x %x\n", array[0], &array[0][0]); prini("%x %x\n", array[1], &array[1][0]); return 0; }

2.2 2 차원배열의주소와값의참조 (8/19)- - - [2-8.c 분석 ] int array[2][2]= {10,20,30,40};

2.2 2 차원배열의주소와값의참조 (9/19)- - - [2-9.c 실습 ] 2 차원배열의다양한주소표현 3 2 차원배열에서 array[i] == *(array+i) 는주소이다. #include<stdio.h> int main(void) { int array[2][2] = {10,20,30,40}; } prini("%x %x %x\n", array[0],*(array+0), *array); prini("%x %x \n", array[1],*(array+1)); return 0;

2.2 2 차원배열의주소와값의참조 (10/19)- - - [2-9.c 분석 ] int array[2][2]= {10,20,30,40};

2.2 2 차원배열의주소와값의참조 (11/19)- - - [2-10.c 실습 ] #include<stdio.h> int main(void) { int array[2][2] = {10,20,30,40}; prini("%x %x \n", &array[0][0],&array[0][1]); prini("%x %x \n", &array[1][0],&array[1][1]); prini("- - - - - - - - - - - - - - - - - - - \n"); prini("%x %x \n", array[0]+0, array[0]+1); prini("%x %x \n", array[1]+0, array[1]+1); prini("- - - - - - - - - - - - - - - - - - - \n"); prini("%x %x \n", *(array+0)+0, *(array+0)+1); prini("%x %x \n", *(array+1)+0, *(array+1)+1); return 0; }

2.2 2 차원배열의주소와값의참조 (12/19)- - - [2-10.c 분석 ] int array[2][2]= {10,20,30,40};

2.2 2 차원배열의주소와값의참조 (13/19) * 연산자 ü 2 차원배열요소에저장된값을참조하는연산자이다. 주소에저장된값참조 * 메모리공간의주소 * * * &array[0][0] array[0]+0 *(array+0)+0 주소 주소 주소

2.2 2 차원배열의주소와값의참조 (14/19)- - - [2-11.c 실습 ] #include<stdio.h> int main(void) { int array[2][2] = {10,20,30,40}; } prini("%d %d \n", *&array[0][0],*&array[0][1]); prini("%d %d \n", *&array[1][0],*&array[1][1]); prini("- - - - - - - - - - - - - - - - - - - \n"); prini("%d %d \n", *array[0]+0, *array[0]+1 ); prini("%d %d \n", *array[1]+0, *array[1]+1 ); prini("- - - - - - - - - - - - - - - - - - - \n"); prini("%d %d \n", **(array+0)+0, **(array+0)+1 ); prini("%d %d \n", **(array+1)+0, **(array+1)+1 ); return 0;

2.2 2 차원배열의주소와값의참조 (15/19)- - - [2-11.c 분석 ] prini("%d %d \n", *array[0]+0, *array[0]+1 ); prini("%d %d \n", *array[1]+0, *array[1]+1 ); array[i] == *(array+i) 출력결과 : 10 출력결과 : 11 출력결과 : 30 출력결과 : 31

2.2 2 차원배열의주소와값의참조 (16/19)- - - [2-11.c 분석 ] prini("%d %d \n", **(array+0)+0, **(array+0)+1 ); prini("%d %d \n", **(array+1)+0, **(array+1)+1 ); array[i] == *(array+i)

2.2 2 차원배열의주소와값의참조 (17/19)- - - [2-12.c 실습 ] #include<stdio.h> int main(void) { int array[2][2] = {10,20,30,40}; } prini("%d %d \n", *&array[0][0],*&array[0][1]); prini("%d %d \n", *&array[1][0],*&array[1][1]); prini("- - - - - - - - - - - - - - - - - - - \n"); prini("%d %d \n", *(array[0]+0), *(array[0]+1)); prini("%d %d \n", *(array[1]+0), *(array[1]+1)); prini("- - - - - - - - - - - - - - - - - - - \n"); prini("%d %d \n", *(*(array+0)+0), *(*(array+0)+1)); prini("%d %d \n", *(*(array+1)+0), *(*(array+1)+1)); return 0;

2.2 2 차원배열의주소와값의참조 (18/19)- - - [2-12.c 분석 ] prini("%d %d \n", *(array[0]+0), *(array[0]+1)); prini("%d %d \n", *(array[1]+0), *(array[1]+1)); array[i] == *(array+i) 출력결과 : 10 출력결과 : 20 출력결과 : 30 출력결과 : 40

2.2 2 차원배열의주소와값의참조 (19/19)- - - [2-12.c 분석 ] prini("%d %d \n", *(*(array+0)+0), *(*(array+0)+1)); prini("%d %d \n", *(*(array+1)+0), *(*(array+1)+1)); array[i] == *(array+i) 출력결과 : 10 출력결과 : 20 출력결과 : 30 출력결과 : 40

공부한내용떠올리기 2 차원배열의선언과구성요소 2 차원배열에데이터를저장하는방법 2 차원배열을선언할때주의할사항 2 차원배열의주소와값을참조하는다양한방법