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

Slides:



Advertisements
Similar presentations
제6장 조건문.
Advertisements

컴퓨터 개론 및 실습 강의 9.
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express Slide 1 (of 34)
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
프로그래밍실습 제 7 강.
배열(Array) 선린인터넷고등학교 정보통신과 유 순 옥.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
에서 ( 탭 – [인기 다운로드 | 모든 다운로드] ) Visual Studio 2015
C 프로그래밍.
C 10장. 함수의 활용 #include <stdio.h> int main(void) { int num;
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
제5장 제어명령
C언어: 배열 (Arrays).
컴퓨터의 기초 제 4강 - 표준 입출력, 함수의 기초 2006년 4월 10일.
6장. printf와 scanf 함수에 대한 고찰
쉽게 풀어쓴 C언어 Express 제9장 함수와 변수 C Express.
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
7. while 문의 흐름 제어.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
동적메모리와 연결리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
C 7장. 배열과 문자열 #include <stdio.h> int main(void) { int num;
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
C 프로그래밍.
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
10장 포인터와 문자열 포인터 기본 배열과 포인터 매개변수 전달방법 포인터와 문자열.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
5주차: Functions in C.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
13. 포인터와 배열! 함께 이해하기.
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
개정판 누구나 즐기는 C언어 콘서트 제6장 반복문 출처: pixabay.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
제어문 & 반복문 C스터디 2주차.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
Chapter 11. 배열과 포인터.
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
포인터.
#1 배열 활용 #include int main(void) { int i; int grade[5]; grade[0] = 10; grade[1] = 20; grade[2] = 30; grade[3] = 40; grade[4] = 50; for(i=0;i.
-Part2- 제1장 1차원 배열이란 무엇인가.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
C언어 프로그래밍의 이해 Ch05. 명령문.
-Part1- 제7장 반복문이란 무엇인가.
-Part1- 제6장 자료형이란 무엇인가.
18장. 다차원 배열 그리고 포인터.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
9주차: Using Files and Others
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
3주차: Control Flow and Others
어서와 C언어는 처음이지 제16장.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
C.
Chapter 09. 배열.
어서와 C언어는 처음이지 제22장.
배열, 포인터, 함수 Review & 과제 1, 2.
11장. 1차원 배열.
Presentation transcript:

-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] 48바이트 == 4 * 12 12행 4행 3열 면 행 열 48바이트 == 4 * 4 * 3 2행 48바이트 == 4 *2 * 2 * 3

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

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열의 배열 길이 선언 *Java: int[][] array = new int[4][3]; -2차원 배열 선언 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; *JAVA : System.out.println(array[0][0]+” “+ array[0][1] +” “+ array[0][2]);0행출력 printf("%d %d %d \n",array[0][0], array[0][1], array[0][2]); // 0행 출력 printf("%d %d %d \n",array[1][0], array[1][1], array[1][2]); // 1행 출력 printf("%d %d %d \n",array[2][0], array[2][1], array[2][2]); // 2행 출력 printf("%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의 데이터 출력 printf("%d %d %d \n",array1[0][0], array1[0][1], array1[0][2]); // 0행 출력 printf("%d %d %d \n",array1[1][0], array1[1][1], array1[1][2]); // 1행 출력 printf("%d %d %d \n",array1[2][0], array1[2][1], array1[2][2]); // 2행 출력 printf("%d %d %d \n",array1[3][0], array1[3][1], array1[3][2]); // 3행 출력 printf("--------------------\n"); // 2차원 배열 array2의 데이터 출력 printf("%d %d %d \n",array2[0][0], array2[0][1], array2[0][2]); // 0행 출력 printf("%d %d %d \n",array2[1][0], array2[1][1], array2[1][2]); // 1행 출력 printf("%d %d %d \n",array2[2][0], array2[2][1], array2[2][2]); // 2행 출력 printf("%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}}; printf("%d %d %d \n",array1[0][0], array1[0][1], array1[0][2]); printf("%d %d %d \n",array1[1][0], array1[1][1], array1[1][2]); printf("%d %d %d \n",array1[2][0], array1[2][1], array1[2][2]); printf("%d %d %d \n",array1[3][0], array1[3][1], array1[3][2]); printf("--------------------\n"); printf("%d %d %d \n",array2[0][0], array2[0][1], array2[0][2]); printf("%d %d %d \n",array2[1][0], array2[1][1], array2[1][2]); printf("%d %d %d \n",array2[2][0], array2[2][1], array2[2][2]); printf("%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++) printf("정수를 입력하세요: "); scanf("%d", &array[i][j]); } //2차원 배열에 데이터 출력 for(i=0;i<2;i++) { for(j=0; j<2; j++) printf("%3d",array[i][j]); } printf("\n"); return 0;

2.1 다차원 배열이란 (11/14) 2차원 배열 선언 시 주의사항 열의 길이는 반드시 설정 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 array4[ ][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][0] array[0][1] array[0][2] array[0][1] array[0][2] 이렇게 이해하자! array[1][0] array[1][0] array[1][1] array[1][2] array[1][1] 2차원 메모리 구조 array[1][2] 물리적 메모리 구조

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

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열 printf("%d ", array[i][j][k]); } printf("\n"); printf("---------------\n");

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

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

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

2.2 2차원 배열의 주소와 값의 참조 (5/19)---[2-7.c 실습] 2차원 배열의 다양한 주소 표현 ‘2차원 배열 이름은 2차원 배열의 시작 주소이다.’ #include<stdio.h> int main(void) { int array[2][2] = {10,20,30,40}; printf("%x %x \n", array, array+0); // 0행의 주소 printf("%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차원 배열의 행의 요소는 행을 대표하는 주소이다.’ #include<stdio.h> int main(void) { int array[2][2] = {10,20,30,40}; printf("%x %x\n", array[0], &array[0][0]); printf("%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차원 배열의 다양한 주소 표현 ③ ‘2차원 배열에서 array[i] == *(array+i)는 주소이다.’ #include<stdio.h> int main(void) { int array[2][2] = {10,20,30,40}; printf("%x %x %x\n", array[0],*(array+0), *array); printf("%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}; printf("%x %x \n", &array[0][0],&array[0][1]); printf("%x %x \n", &array[1][0],&array[1][1]); printf("-------------------\n"); printf("%x %x \n", array[0]+0, array[0]+1); printf("%x %x \n", array[1]+0, array[1]+1); printf("%x %x \n", *(array+0)+0, *(array+0)+1); printf("%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}; printf("%d %d \n", *&array[0][0],*&array[0][1]); printf("%d %d \n", *&array[1][0],*&array[1][1]); printf("-------------------\n"); printf("%d %d \n", *array[0]+0, *array[0]+1 ); printf("%d %d \n", *array[1]+0, *array[1]+1 ); printf("%d %d \n", **(array+0)+0, **(array+0)+1 ); printf("%d %d \n", **(array+1)+0, **(array+1)+1 ); return 0; }

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

2.2 2차원 배열의 주소와 값의 참조 (16/19)---[2-11.c 분석] printf("%d %d \n", **(array+0)+0, **(array+0)+1 ); printf("%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}; printf("%d %d \n", *&array[0][0],*&array[0][1]); printf("%d %d \n", *&array[1][0],*&array[1][1]); printf("-------------------\n"); printf("%d %d \n", *(array[0]+0), *(array[0]+1)); printf("%d %d \n", *(array[1]+0), *(array[1]+1)); printf("%d %d \n", *(*(array+0)+0), *(*(array+0)+1)); printf("%d %d \n", *(*(array+1)+0), *(*(array+1)+1)); return 0; }

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

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