13. 포인터와 배열! 함께 이해하기.

Slides:



Advertisements
Similar presentations
제6장 조건문.
Advertisements

2007 1학기 12 배열.
데이터의 표현과 연산 (1) (Chapter 3)
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
C언어: 배열 (Arrays).
6장. printf와 scanf 함수에 대한 고찰
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
Chapter 13 문자 데이터와 문자열 문자 데이터 문자열.
7. while 문의 흐름 제어.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
윤성우의 열혈 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장 포인터와 문자열 포인터 기본 배열과 포인터 매개변수 전달방법 포인터와 문자열.
표준 출력 함수 printf 출력 데이터 서식화(formatting) 표준 입력 함수 scanf 입력 데이터 서식화
Chapter 06. 선택문.
Chapter 10. 포인터.
프로그래밍2 및 실습 C언어 기반의 C++ 2.
14장. 포인터와 함수에 대한 이해.
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
Chapter 10 함수 기본.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
C언어 프로그래밍의 이해 Ch13. 선행처리기와 주석문.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 11. 1차원 배열.
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 문을 이용하여 작성.
-Part2- 제1장 1차원 배열이란 무엇인가.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
C89(C++03) 프로그래밍 (Part 2) 7 배열 8 변수 범위 9 포인터 10 유도 자료형.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
-Part1- 제7장 반복문이란 무엇인가.
18장. 다차원 배열 그리고 포인터.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
뇌를 자극하는 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.
3주차: Control Flow and Others
어서와 C언어는 처음이지 제16장.
argc, argv 의 사용방법 #include <stdio.h>
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
17장. 포인터의 포인터.
C.
실습과제 1번 배열 크기 : 8 문자열 길이 : 7 // MBCS 예제: 출력 결과 이해하기
C 프로그래밍은 매우 도전적인 작업이다. 도전의 이면에 철저한 준비와 체계적인 노력
Chapter 09. 배열.
13. 포인터와 배열! 함께 이해하기.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 17. 포인터의 포인터.
배열, 포인터, 함수 Review & 과제 1, 2.
3b장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
배열.
11장. 1차원 배열.
Presentation transcript:

13. 포인터와 배열! 함께 이해하기

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