18장. 다차원 배열 그리고 포인터.

Slides:



Advertisements
Similar presentations
7 월 소식지에서는 도서관 분류에 대해 알아보았어요. 한국십진분류법은 0 에서 9 까지 열 개의 수를 가지고 이 세상 의 모든 것을 나누는 방법이라는 것. 이 세상의 모든 것이 이 열 개 가운데 어딘가에 꼭 들어가 야 한 다는 것 그럼,
Advertisements

제6장 조건문.
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
2017년 1/4분기 상1동 주민자치센터프로그램 수강생 모집【선착순】
꼼꼼한 청소법 생활의 지혜.
에서 ( 탭 – [인기 다운로드 | 모든 다운로드] ) Visual Studio 2015
제3장 추가 실습 3장 관련 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언어 콘서트 제4장 수식과 연산자.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
25장. 메모리 관리와 동적 할당.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
C 7장. 배열과 문자열 #include <stdio.h> int main(void) { int num;
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
Chapter 06. 선택문.
Chapter 10. 포인터.
14장. 포인터와 함수에 대한 이해.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
Chapter 3 클래스. 최호성.
13. 포인터와 배열! 함께 이해하기.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
C언어 프로그래밍의 이해 Ch13. 선행처리기와 주석문.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
19. 함수 포인터와 void 포인터.
제어문 & 반복문 C스터디 2주차.
호암초등학교 박대현 선생님의 음악 수업 안내.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
Chapter 11. 배열과 포인터.
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
포인터.
-Part2- 제1장 1차원 배열이란 무엇인가.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
5. 논리적 자료표현 : 구조체.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
-Part1- 제7장 반복문이란 무엇인가.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
뇌를 자극하는 C 프로그래밍.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
-Part2- 제2장 다차원 배열이란 무엇인가.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
어서와 C언어는 처음이지 제16장.
argc, argv 의 사용방법 #include <stdio.h>
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
17장. 포인터의 포인터.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
C.
C 프로그래밍은 매우 도전적인 작업이다. 도전의 이면에 철저한 준비와 체계적인 노력
개정판 누구나 즐기는 C언어 콘서트 제3장 변수와 자료형 출처: pixabay.
13. 포인터와 배열! 함께 이해하기.
어서와 C언어는 처음이지 제22장.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 17. 포인터의 포인터.
배열, 포인터, 함수 Review & 과제 1, 2.
3b장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
11장. 1차원 배열.
Presentation transcript:

18장. 다차원 배열 그리고 포인터

18-1 2차원 배열 이름의 포인터 타입 그림 18-1 그림 18-2

18-1 2차원 배열 이름의 포인터 타입 1차원 배열 이름의 포인터 타입 결정 포인트! 1차원 배열 이름 18-1 2차원 배열 이름의 포인터 타입 1차원 배열 이름의 포인터 타입 결정 포인트! 포인터가 가리키는 요소의 자료형 포인터 연산 시 증가하는 바이트의 크기 1차원 배열 이름 배열 이름이 가리키는 요소의 자료형이 일치 한다면, 포인터 연산 시 증가하는 값의 크기도 일치. 따라서 1차원 배열 이름의 경우 가리키는 요소만 참조.

18-1 2차원 배열 이름의 포인터 타입 다차원 배열의 포인터 타입 결정 포인트! 2차원 배열 이름 18-1 2차원 배열 이름의 포인터 타입 다차원 배열의 포인터 타입 결정 포인트! 포인터가 가리키는 요소의 자료형 포인터 연산 시 증가하는 바이트의 크기 2차원 배열 이름 포인터가 가리키는 요소의 자료형이 같다 해도 포인터 연산 시 증가하는 값의 크기 불일치! 포인터 연산 결과도 생각해 봐야 함.

18-1 2차원 배열 이름의 포인터 타입 2차원 배열 이름의 특성 이해(1단계) 그림 18-4 그림 18-5 18-1 2차원 배열 이름의 포인터 타입 2차원 배열 이름의 특성 이해(1단계) /* two_array1.c */ #include <stdio.h> int main(void) { int a[3][2]={1, 2, 3, 4, 5, 6}; printf("a[0] : %d \n", a[0]); printf("a[1] : %d \n", a[1]); printf("a[2] : %d \n", a[2]); printf("a : %d \n", a); return 0; } 그림 18-4 그림 18-5

18-1 2차원 배열 이름의 포인터 타입 2차원 배열 이름의 특성 이해(2단계) 그림 18-6 그림 18-7 18-1 2차원 배열 이름의 포인터 타입 2차원 배열 이름의 특성 이해(2단계) /* arr2_name.c */ #include <stdio.h> int main(void) { int a[3][2]={1, 2, 3, 4, 5, 6}; printf("a : %d \n", a ); printf("a+1 : %d \n", a+1); printf("a+2 : %d \n", a+2); return 0; } 그림 18-6 그림 18-7

18-1 2차원 배열 이름의 포인터 타입 2차원 배열 이름의 특성 이해(결론1) 그림 18-8

18-1 2차원 배열 이름의 포인터 타입 2차원 배열 이름의 특성 이해(결론2) 2차원 배열 이상의 포인터 타입 구성 18-1 2차원 배열 이름의 포인터 타입 2차원 배열 이름의 특성 이해(결론2) 2차원 배열 이상의 포인터 타입 구성 가리키는 대상의 자료형 포인터 연산 시 증가하는 바이트의 크기 /* arr2_ptr.c */ #include <stdio.h> int main(void) { int arr1[3][2]; printf("arr1 : %d \n", arr1); printf("arr1+1 : %d \n", arr1+1); printf("arr1+2 : %d \n", arr1+2); return 0; } /* arr2_ptr.c */ #include <stdio.h> int main(void) { int arr2[2][3]; printf("arr2 : %d \n", arr2); printf("arr2+1 : %d \n", arr2+1); printf("arr2+2 : %d \n", arr2+2); return 0; }

18-1 2차원 배열 이름의 포인터 타입 2차원 배열 이름에 일치하는 포인터 선언 예제 pnt_arr.c 참조 그림 18-12 18-1 2차원 배열 이름의 포인터 타입 2차원 배열 이름에 일치하는 포인터 선언 예제 pnt_arr.c 참조 int arr[2][4]; int (*pArr)[4]; 그림 18-12

18-1 2차원 배열 이름의 포인터 타입 매개 변수로 선언되는 포인터의 또 다른 표현 그림 18-13 18-1 2차원 배열 이름의 포인터 타입 매개 변수로 선언되는 포인터의 또 다른 표현 그림 18-13 int main (void) { int arr1[2][4]={1, 2, 3, 4, 5, 6, 7, 8}; int (*ptr1)[4]=arr1; // OK int ptr2[][4]=arr1; // ERROR . . . . .

“int (*pArr)[4]” 과 “int* pArr[4]”의 차이점 18-1 2차원 배열 이름의 포인터 타입 “int (*pArr)[4]” 과 “int* pArr[4]”의 차이점 그림 18-14

18-2 2차원 배열에서의 “arr[i]”와 “*(arr+i)” 다양한 형태의 배열 요소 접근 방법 /* two_array2.c */ #include <stdio.h> int main(void) { int a[3][2]={ {1, 2}, {3, 4}, {5, 6} }; printf("a[0] : %d \n", a[0]); printf("*(a+0) : %d \n", *(a+0)); printf("a[1] : %d \n", a[1]); printf("*(a+1) : %d \n", *(a+1)); printf("a[2] : %d \n", a[2]); printf("*(a+2) : %d \n", *(a+2)); printf("%d, %d \n", a[1][0], (*(a+1))[0]); printf("%d, %d \n", a[1][2], *(a[1]+2)); printf("%d, %d \n", a[2][1], *(*(a+2)+1)); return 0; }