PowerPoint Presentation

Similar documents
Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - ch07 - 포인터 pm0415

PowerPoint Template

11장 포인터

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

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

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

OCW_C언어 기초

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - 제11장 포인터

untitled

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

Microsoft PowerPoint - chap-11.pptx

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

Data Structure

PowerPoint 프레젠테이션

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

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - chap04-연산자.pptx

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

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - C_9장 포인터 pptx

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

설계란 무엇인가?

Microsoft PowerPoint - [2009] 02.pptx

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

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

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

슬라이드 1

PowerPoint 프레젠테이션

Data Structure

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

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

설계란 무엇인가?

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

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

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

Microsoft PowerPoint - Chapter_04.pptx

C++ Programming

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

6.1 Addresses and Pointers Recall memory concepts from Ch2 ch6_testbasicpointer.c int x1=1, x2=7; double distance; int *p; int q=8; p = &q; name addre

11장 포인터

중간고사

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

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

Microsoft PowerPoint - 2장 변수와 자료형 pptx

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

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Microsoft PowerPoint - chap-05.pptx

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

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

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

02장.배열과 클래스

Microsoft PowerPoint - Chapter_08.pptx

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

Microsoft PowerPoint - c2.ppt

PowerPoint 프레젠테이션

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

API 매뉴얼

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

본 강의에 들어가기 전

슬라이드 1

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

C# Programming Guide - Types

Microsoft PowerPoint - e pptx

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

01-도입-12-27

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

4.0 개요 p.116 수식 (expression) 연산자 (operator) 와피연산자 (operand) 로구성 수식은평가 (evaluate) 되어최종적으로 1 개의결과값이됨 피연산자 : 상수, 변수, 또다른수식 sum - 10 (a+b) / 2 연산자 2

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 02. 표준 입출력

TEST BANK & SOLUTION

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - 05-chap03-ArrayAndPointer.ppt

chap 5: Trees

쉽게 풀어쓴 C 프로그래밍

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

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

PowerPoint Presentation

PowerPoint 프레젠테이션

06 세상을 변화시키는 연산자

<4D F736F F F696E74202D20C1A635C0E520BCF6BDC4B0FABFACBBEAC0DA>


Microsoft PowerPoint - C++ 5 .pptx

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

PowerPoint Presentation

Microsoft PowerPoint - chap05-제어문.pptx

PowerPoint 프레젠테이션

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

슬라이드 1

PowerPoint Presentation

Transcription:

컴퓨터프로그래밍 Computer Programming

08 포인터기초

목차 1. 포인터변수와선언 2. 간접연산자 * 와포인터연산 3. 포인터형변환과다중포인터 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 3

1. 포인터변수와선언

주소개념 주소 address 메모리공간은 8비트인 1 바이트마다순차적인고유한번호 메모리주소는저장장소인변수이름과함께기억장소를참조하는또다른방법 렉슬아파트 와같이아파트이름이변수이름 선릉로 888 과같이도로명과번호가메모리주소 메모리주소가왜필요하지요? 보다편리하고융통성있는프로그램이가능 주소정보를이용하여주소가가리키는변수의값을참조가능 주소정보의이전또는이후의이웃한저장공간의값도쉽게참조가능 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 5

주소개념 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 6

주소연산자 & 함수 scanf() 를사용하면서인자를 & 변수이름 으로사용 바로 &(ampersand) 가피연산자인변수의메모리주소를반환하는주소연산자 함수 scanf() 에서입력값을저장하는변수의주소값이인자의자료형 함수 scanf() 에서일반변수앞에는주소연산자 & 를사용 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 7

Source Code #01: address.c 변수의값과주소값을출력 변수의주소값출력 형식제어문자 %u 또는 %d 로직접출력 최근비주얼스튜디오에서는경고가발생하니주소값을 int 또는 unsigned 로변환하여출력 만일 16 진수로출력 형식제어문자 %p 를사용 & 연산자는 & 변수 와같이피연산자앞에위치하는전위연산자로변수에만사용가능 &32 와 &(3+4) 은오류 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 8

포인터변수 주소값을저장하는변수 변수의주소값은반드시포인터변수에저장 일반변수에는일반자료값이저장 일반변수와구별되며선언방법이다름 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 9

메모리주소를저장하는포인터변수 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 10

포인터변수선언 선언방법 포인터변수선언에서자료형과포인터변수이름사이에연산자 *(asterisk) 를삽입 ptrint, ptrshort, ptrchar, ptrdouble 은모두포인터변수 간단히포인터라고도부름 예로 int *ptrint 선언 int 포인터 ptrint 라고읽도록 변수자료형이다르면 그변수의주소를저장하는포인터의자료형도반드시달라야함 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 11

포인터변수선언 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 12

Source Code #02: pointer.c 변수의값과주소값의대입과활용 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 13

포인터선언과대입 포인터변수도선언된후초기값이없으면의미없는쓰레기 garbage 값이저장 문장 ptrint = &data; 포인터변수 ptrint 에변수 data 의주소를저장하는문장 &data 에서 ptrint 로의화살표 포인터변수 ptrint 에변수 data 의주소가저장되었다는의미 이러한관계를 포인터변수 ptrint 는변수 data 를가리킨다 또는 참조 reference 한다 라고표현 포인터변수는가리키는변수의크기 종류에관계없이크기가모두 4 바이트 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 14

포인터선언과대입 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 15

Lab #01: 다양한자료형포인터변수선언에의한주소값출력 자료형 char, int, double 의변수와포인터변수선언과활용하는프로그램 char 포인터변수선언 : char *pc int 포인터변수선언 : int *pm double 포인터변수선언 : double *px 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 16

2. 간접연산자 * 와포인터연산

Source Code #03: nullpointer.c 포인터변수와 NULL 의활용 포인터변수도초기값을저장하도록 아니면 NULL 을저장 초기값을지정하지않은포인터변수 ptr2 를출력 warning C4101: ptr2 : 참조되지않은지역변수입니다. 라는컴파일오류가발생 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 18

간접연산자 * 간접연산자 indirection operator * 를사용 포인터변수가갖는주소로그주소의원래변수를참조가능 포인터변수가가리키고있는변수를참조 간접연산자를이용한 *ptrint 포인터 ptrint 가가리키고있는변수자체를의미 직접참조direct access 변수 data 자체를사용해자신을참조하는방식 간접참조indirect access *ptrint 를이용해서변수 data 를참조하는방식 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 19

간접연산자 * 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 20

Source Code #04: dereference.c 포인터변수와간접연산자 * 를이용한간접참조 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 21

연산자 & 와 * 주소연산자 & 와간접연산자 *, 모두전위연산자로서로반대의역할 주소연산 & 변수 는변수의주소값이결과값 간접연산 * 포인터변수 는포인터변수가가리키는변수자체가결과값 * 포인터변수 는 l-value 와 r-value 로모두사용이가능 주소값인 & 변수 는 r-value 로만사용이가능 * 포인터변수 와같이간접연산자는포인터변수에만사용이가능 주소연산자는 & 변수 와같이모든변수에사용이가능 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 22

주소연산 포인터변수는간단한더하기와뺄셈연산 이웃한변수의주소연산을수행가능 포인터가가리키는변수크기에비례한연산 포인터의연산은절대적인주소의계산이아님 포인터에저장된주소값의연산으로이웃한이전또는이후의다른변수를참조 int 형포인터 pi 에저장된주소값이 100 이라고가정 (pi+1) 은 101이아니라주소값 104 즉 (pi+1) 은 pi가가리키는다음 int형의주소를의미 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 23

주소연산 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 24

Source Code #05: calcptr.c 다양한자료형의주소연산과주소값출력 포인터 pd 에정수 100 을직접저장하면경고가발생 double *pd = 100; // 경고발생 double *pd = (double *)100; // 가능하나잘이용하지않음 double 형포인터에 100 이라는주소값을저장 포인터자료형으로 100 을변환하는연산식 (double *) 100 을사용해저장가능, 권장하지않음 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 25

Source Code #06: neighborvar.c int 자료형의주소연산과주소값출력 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 26

이웃한변수주소 int 형변수 3 개를선언해그저장값과주소값을출력 일반적으로정수 int 와 int 사이는주소값으로그차이가절대값으로 12 정도 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 27

Lab #02: 포인터를이용하여두수의값을교환하는프로그램 정수 int 자료형변수 m, n 에저장된두값을서로교환하는프로그램 제한사항 결과 임시변수인 dummy 를사용하고, 포인터변수 p 를사용하나변수 m, n 자체는사용하지않으며, 주소값 &m 과 &n 만을사용 포인터변수선언 int *p = &m; 으로 *p 는 m 자체를의미함 마찬가지로대입문장 p = &n; 으로 *p 는 n 자체를의미함 100 200 200 100 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 28

3. 포인터형변환과다중포인터

내부저장표현 변수 value 에 16 진수 0x61626364 를저장 만일변수 value 의주소가 56번지라면 56번지에는 16진수 64가저장 다음주소 57번지에는 63이저장 다음에각각 62, 61이저장 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 30

Source Code #07: ptrtypecast.c 정수의내부를각각 1 바이트씩문자로출력 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 31

명시적포인터형변환 포인터변수는동일한자료형끼리만대입이가능 포인터의자료형이다르면경고가발생 필요하면명시적으로형변환을수행가능 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 32

다중포인터 이중포인터 포인터변수의주소값을갖는변수 삼중포인터 다시이중포인터의주소값을갖는변수 다중포인터 포인터의포인터 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 33

이중포인터의메모리와변수 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 34

Source Code #08: multipointer.c 포인터와이중포인터의활용 다중포인터변수를이용하여일반변수를참조하려면가리킨횟수만큼간접연산자를이용 즉이중포인터변수 dpi 는 **dpi 가바로변수 i 문장 *pi = i + 2; 는변수 i 를 2 증가시키는문장 포인터변수 pi 에서 *pi 도변수 i 문장 **dpi = *pi + 2; 는변수 i 를 2 증가시키는문장 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 35

간접연산자와증감연산자활용 간접연산자 * 는증감연산자 ++, -- 와함께사용하는경우 간접연산자 * 는전위연산자로연산자우선순위가 2 위 증감연산자 ++, -- 는전위이면 2 위이고, 후위이면 1 위 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 36

간접연산자와증감연산자활용 사용사례 *p++ 는 *(p++) 으로 (*p)++ 와다르다. ++*p와 ++(*p) 는같다. *++p 는 *(++p) 는같다. 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 37

Source Code #09: variousop.c 간접연산자와증가연산자의활용 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 38

Source Code #10: constptr.c 포인터상수활용 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 39

포인터상수 *pi 를사용해포인터 pi 가가리키는변수인 i 를수정할수없도록하는상수선언방법 즉간접연산식 *pi 을상수로만들면 *pi 를 l- value 로사용할수없음 1 번과동일한문장으로간접연산식 *pi 를상수로만드는방법 포인터 pi 에저장되는초기주소값을더이상수정할수없도록하는상수선언방법 즉포인터변수 pi 자체를상수로만드는방법으로, 선언이후 pi 를 l-value 로사용할수없음 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 40

Lab #03: 두실수의덧셈을포인터변수를사용해수행하고출력 자료형 double 로선언된두 x 와 y 에표준입력으로두실수를입력받아두실수의덧셈결과를출력하는프로그램 제한사항 두변수 x 와 y 는선언만수행하며, 포인터변수인 px 와 py 만을사용하여모든과정을코딩 double 포인터변수 px 선언 : double *px = &x; double 포인터변수 py 선언 : double *py = &y; 결과 두실수입력 : 3.874 7.983 3.87 + 7.98 = 11.86 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 41

컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 42