13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.

Slides:



Advertisements
Similar presentations
1.1 구조체란 1.2 중첩 구조체 1.3 구조체와 배열 1.4 구조체와 포인터 1.5 구조체와 함수 1.6 공용체와 열거형.
Advertisements

Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
포인터란? 사전적 의미로써 지시자 혹은 가리키는 것으로 풀이할 수 있으나, C프로그래밍 언어에서는 메모리의 주소를 저장하는 변수이다. 포인터 자체가 하나의 변수이기 때문에 포인터도 메모리 내에서 선언이 되며 일반 상수를 저장하는 변수가 아닌 주소값을 저장하는 변수라는 점에서.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
제 9 장 포인터.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
Chapter 14 포인터.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제 9 장 구조체와 공용체.
-Part2- 제3장 포인터란 무엇인가.
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
5장. 참조 타입.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
C 프로그래밍.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
포인터 활용 포인터 활용.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
14장. 포인터와 함수에 대한 이해.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
11장. 1차원 배열.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
처음으로 배우는 C 프로그래밍 제4부 복합 데이터 형 제 8 장 배열, 주소, 포인터.
13. 포인터와 배열! 함께 이해하기.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
24장. 파일 입출력.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
포인터 1차원 배열과 포인터 2차원 배열과 포인터 문자열 배열과 포인터 포인터 배열
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
제 1 강.
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
8주차: Strings, Arrays and Pointers
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
18장. 다차원 배열 그리고 포인터.
Chapter 09. 포인터 1.
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
Summary of Pointers and Arrays
Numerical Analysis Programming using NRs
17장. 포인터의 포인터.
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
C 프로그래밍은 매우 도전적인 작업이다. 도전의 이면에 철저한 준비와 체계적인 노력
Chapter 09. 배열.
13. 포인터와 배열! 함께 이해하기.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 17. 포인터의 포인터.
Pointers summary.
11장. 1차원 배열.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수

13-1 포인터와 배열의 관계 배열의 이름의 정체 배열 이름은 첫 번째 요소의 주소 값을 나타낸다. 13-1 포인터와 배열의 관계 배열의 이름의 정체 배열 이름은 첫 번째 요소의 주소 값을 나타낸다. pointer_array1.c 참조 int a[5]={0, 1, 2, 3, 4} 그림 13-1

13-1 포인터와 배열의 관계 /* pointer_array1.c */ #include <stdio.h> 13-1 포인터와 배열의 관계 /* pointer_array1.c */ #include <stdio.h> int main(void) { int a[5]={0, 1, 2, 3, 4}; printf("%d, %d \n", a[0], a[1]); printf("%d 번지 , %d 번지 \n", &a[0], &a[1]); printf("배열 이름 : %d \n", a); return 0; }

13-1 포인터와 배열의 관계 배열 이름과 포인터 비교 비교 대상 비교 조건 포인터 배열 이름 이름이 존재하는가 물론 있다. 13-1 포인터와 배열의 관계 배열 이름과 포인터 비교 비교 대상 비교 조건 포인터 배열 이름 이름이 존재하는가 물론 있다. 당연히 있다. 무엇을 나타내는가 메모리의 주소 변수인가 상수인가 변수 상수 int main(void) { int a[5]={0, 1, 2, 3, 4}; int b=10; a=&b; //a는 상수이므로 오류, a가 변수였다면 OK! }

13-1 포인터와 배열의 관계 배열 이름의 타입 배열 이름도 포인터이므로 타입이 존재 13-1 포인터와 배열의 관계 배열 이름의 타입 배열 이름도 포인터이므로 타입이 존재 배열 이름이 가리키는 배열 요소에 의해 결정 int arr1[10] int* double arr2[20] double*

13-1 포인터와 배열의 관계 배열 이름의 활용 배열 이름을 포인터처럼, 포인터를 배열 이름처럼 활용하 는 것이 가능! 13-1 포인터와 배열의 관계 배열 이름의 활용 배열 이름을 포인터처럼, 포인터를 배열 이름처럼 활용하 는 것이 가능! /* pointer_array2.c */ #include <stdio.h>   int main(void) { int arr[3]={0, 1, 2}; int *ptr; ptr=arr; printf("%d, %d, %d \n", ptr[0], ptr[1], ptr[2]); return 0; } 그림 13-2

13-2 포인터 연산 포인터 연산이란? 포인터가 지니는 값을 증가 혹은 감소시키는 연산을 의미 ptr1++; 13-2 포인터 연산 포인터 연산이란? 포인터가 지니는 값을 증가 혹은 감소시키는 연산을 의미 ptr1++; ptr1 += 3; --ptr1; ptr2=ptr1+2;

13-2 포인터 연산 포인터 연산 포인터가 가리키는 대상의 자료형에 따라서 증가 및 감소되 는 값이 차이를 지님 13-2 포인터 연산 포인터 연산 포인터가 가리키는 대상의 자료형에 따라서 증가 및 감소되 는 값이 차이를 지님 /* pointer_op.c */ #include <stdio.h>   int main(void) { int* ptr1=0; // int* ptr1=NULL; 과 같은 문장 char* ptr2=0; // char* ptr2=NULL; 과 같은 문장 double* ptr3=0; // double* ptr3=NULL; 과 같은 문장 printf("%d 번지, %d 번지, %d 번지 \n", ptr1++, ptr2++, ptr3++); printf("%d 번지, %d 번지, %d 번지 \n", ptr1, ptr2, ptr3); return 0; }

13-2 포인터 연산 포인터 연산을 통한 배열 요소의 접근 그림 13-4 /* pointer_array3.c */ 13-2 포인터 연산 포인터 연산을 통한 배열 요소의 접근 /* pointer_array3.c */ #include <stdio.h>   int main(void) { int arr[5]={1, 2, 3, 4, 5}; int* pArr=arr; printf("%d \n", *pArr); printf("%d \n", *(++pArr)); printf("%d \n", *(pArr+1)); printf("%d \n", *(pArr+2)); return 0; } 그림 13-4

13-2 포인터 연산 포인터와 배열을 통해서 얻을 수 있는 중대한 결론 그림 13-5 /* two_same.c */ 13-2 포인터 연산 포인터와 배열을 통해서 얻을 수 있는 중대한 결론 /* two_same.c */ #include <stdio.h>   int main(void) { int arr[2]={1, 2}; int* pArr=arr; printf("%d, %d \n", arr[0], *(arr+1)); printf("%d, %d \n", pArr[0], *(pArr+1)); return 0; } 그림 13-5

13-3 문자열 상수를 가리키는 포인터 문자열 표현 방식의 이해 배열 기반의 문자열 변수 포인터 기반의 문자열 상수 13-3 문자열 상수를 가리키는 포인터 문자열 표현 방식의 이해 배열 기반의 문자열 변수 포인터 기반의 문자열 상수 str_prn.c 참조 char str1[5]="abcd"; char *str2="ABCD"; 그림 13-6

/* str_prn.c*/ #include <stdio.h> int main() { char str1[5]="abcd"; char *str2="ABCD"; printf("%s \n", str1); printf("%s \n", str2); str1[0]='x'; // str2[0]='x'; //Error ?! return 0; }

13-4 포인터 배열 포인터 배열 배열의 요소로 포인터를 지니는 배열 그림 13-8 int* arr1[10]; 13-4 포인터 배열 포인터 배열 배열의 요소로 포인터를 지니는 배열 int* arr1[10]; double* arr2[20]; char* arr3[30]; 그림 13-8

13-4 포인터 배열 포인터 배열 예제 1 그림 13-9 /* ptr_arr.c */ 13-4 포인터 배열 포인터 배열 예제 1 /* ptr_arr.c */ #include <stdio.h>   int main(void) { int a=10, b=20, c=30; int* arr[3]={&a, &b, &c}; printf("%d \n", *arr[0]); printf("%d \n", *arr[1]); printf("%d \n", *arr[2]); return 0; } 그림 13-9

13-4 포인터 배열 포인터 배열 예제 2 그림 13-10 그림 13-11 { char* arr[3]={ 13-4 포인터 배열 포인터 배열 예제 2 /* str_arr.c */ #include <stdio.h>   int main(void) { char* arr[3]={ "Fervent-lecture", "TCP/IP", "Socket Programming" };   printf("%s \n", arr[0]); printf("%s \n", arr[1]); printf("%s \n", arr[2]); return 0; } 그림 13-10 그림 13-11