Microsoft PowerPoint - 제11장 포인터

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

11장 포인터

Microsoft PowerPoint - ch07 - 포인터 pm0415

untitled

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

Microsoft PowerPoint - chap-11.pptx

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

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

PowerPoint 프레젠테이션

슬라이드 1

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

설계란 무엇인가?

Data Structure

Microsoft PowerPoint - chap06-2pointer.ppt

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

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

ch15

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

11장 포인터

Microsoft PowerPoint - Chapter_08.pptx

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

OCW_C언어 기초

KNK_C_05_Pointers_Arrays_structures_summary_v02

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

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

02장.배열과 클래스

PowerPoint 프레젠테이션

PowerPoint Template

설계란 무엇인가?

Microsoft PowerPoint - chap10-함수의활용.pptx

PowerPoint Presentation

Microsoft PowerPoint - C_9장 포인터 pptx

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

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

untitled

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

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

C 언어 프로그래밊 과제 풀이

untitled

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

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

쉽게 풀어쓴 C 프로그래밍

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

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

Microsoft PowerPoint - 05-chap03-ArrayAndPointer.ppt

Microsoft PowerPoint - chap06-1Array.ppt

중간고사

PowerPoint 프레젠테이션

ABC 6장

슬라이드 1

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Microsoft PowerPoint - Chapter14_17.pptx

Microsoft PowerPoint - Lesson14.pptx

Microsoft PowerPoint - Lesson14.pptx

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

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - Lesson2.pptx

Data Structure

Microsoft PowerPoint - C++ 5 .pptx

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

chap 5: Trees

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - chap04-연산자.pptx

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

PowerPoint 프레젠테이션

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

쉽게 풀어쓴 C 프로그래밍

8장. 포인터

Microsoft PowerPoint - [2009] 02.pptx

C 프로그래밊 개요

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

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

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

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

Lab 3. 실습문제 (Single linked list)_해답.hwp

Microsoft PowerPoint - Chapter_04.pptx

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

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

C++ Programming

Microsoft PowerPoint - 04_C_Language_Function

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

Microsoft PowerPoint - Chapter8.pptx

Infinity(∞) Strategy

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

Microsoft PowerPoint - 7장 배열 pptx

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

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

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

untitled

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap-09.pptx

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

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

<4D F736F F F696E74202D20C1A639C0E520C7D4BCF6BFCDBAAFBCF6>

Transcription:

쉽게풀어쓴 C 언어 Express 제 11 장포인터

이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다.

포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007

메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1,

변수와메모리 변수의크기에따라서차지하는메모리공간이달라진다. char형변수 : 1바이트, int형변수 : 4바이트, int main(void) int i = 10; char c = 69; float f = 12.3; 변수값변수이름 10 i c 69 12.3 f 주소

변수의주소 변수의주소를계산하는연산자 : & 변수 i 의주소 : &i 변수값변수이름 10 i c 69 12.3 f 주소 &i &c &f

변수의주소 int main(void) int i = 10; char c = 69; float f = 12.3; printf("i의주소 : %u\n", &i); printf("c의주소 : %u\n", &c); printf("f의주소 : %u\n", &f); return 0; // 변수 i 의주소출력 // 변수 c 의주소출력 // 변수 f 의주소출력 i 의주소 : 1245024 c 의주소 : 1245015 f 의주소 : 1245000

포인터의선언 포인터 : 변수의주소를가지고있는변수

포인터의선언

포인터와변수의연결 int i = 10; // 정수형변수 i 선언 int *p = &i; // 변수 i의주소가포인터 p로대입

다양한포인터의선언 char c = 'A'; float f = 36.5; double d = 3.141592; // 문자형변수 c // 실수형변수 f // 실수형변수 d char *pc = &c; float *pf = &f; double *pd = &d; // 문자를가리키는포인터 pc // 실수를가리키는포인터 pf // 실수를가리키는포인터 pd pc A c pf 36.5 f pd 포인터 변수 3.141592 d

간접참조연산자 간접참조연산자 *: 포인터가가리키는값을가져오는연산자 int i; int *p=&i; printf( %d, *p):

간접참조연산자의해석 간접참조연산자 : 지정된위치에서포인터의타입에따라값을읽어들인다. int *p = 8; // 위치 8에서정수를읽는다. char *pc = 8; // 위치 8에서문자를읽는다. double *pd = 8; // 위치 8에서실수를읽는다.

& 연산자와 * 연산자

포인터예제 #1 #include <stdio.h> int main(void) int i = 3000; int *p = &i; printf("&i = %u\n", &i); printf("i = %d\n", i); p // 변수와포인터연결 // 변수의주소출력 // 변수의값출력 3000 i printf("*p = %d\n", *p); printf("p = %u\n", p); // 포인터를통한간접참조값출력 // 포인터의값출력 return 0; i = 3000 &i = 1245024 *p = 3000 p = 1245024

포인터예제 #2 #include <stdio.h> int main(void) int x=10, y=20; int *p; p = &x; printf("p = %d\n", p); printf("*p = %d\n\n", *p); p 10 x 20 y p = &y; printf("p = %d\n", p); printf("*p = %d\n", *p); return 0; p = 1245052 *p = 10 p = 1245048 *p = 20

#include <stdio.h> int main(void) int i=10; int *p; 포인터예제 #3 p 10 i p = &i; printf("i = %d\n", i); *p = 20; printf("i = %d\n", i); return 0; i= 10 i= 20

중간점검 메모리는어떤단위를기준으로주소가매겨지는가? 다음의각자료형이차지하는메모리공간의크기를쓰시오. (a) char (b) short (c) int (d) long (e) float (f) double 포인터도변수인가? 변수의주소를추출하는데사용되는연산자는무엇인가? 변수 x의주소를추출하여변수 p에대입하는문장을쓰시오. 정수형포인터 p가가리키는위치에 25를저장하는문장을쓰시오.

포인터사용시주의점 초기화가안된포인터를사용하면안된다. int main(void) int *p; // 포인터 p는초기화가안되어있음 *p = 100; // 위험한코드 return 0; 주소가잘못된것같은데 p?

포인터사용시주의점 포인터가아무것도가리키고있지않는경우에는 NULL로초기화 NULL 포인터를가지고간접참조하면하드웨어로감지할수있다. 포인터의유효성여부판단이쉽다. 포인터가아무것도가리키지않을때는반드시 NULL 로설정하세요. NULL x

포인터사용시주의점 포인터의타입과변수의타입은일치하여야한다. #include <stdio.h> int main(void) int i; double *pd; pd = &i; *pd = 36.5; // 오류! double 형포인터에 int 형변수의주소를대입 return 0; pd double * i int

중간점검 초기값이결정되지않은포인터에는어떤값을넣어두는것이안전한가? char형변수에 double형포인터로값을저장한다면어떤문제가발생하는가?

포인터연산 가능한연산 : 증가, 감소, 덧셈, 뺄셈연산 증가연산의경우증가되는값은포인터가가리키는객체의크기 포인터타입 ++ 연산후증가되는값 char 1 short 2 int 4 float 4 double 8 포인터의증가는일반변수와는약간다릅니다. 가리키는객체의크기만큼증가합니다. 100 100 double short float char int * * ++ 연산 104 108 102 101

증가연산예제 // 포인터의증감연산 #include <stdio.h> int main(void) char *pc; int *pi; double *pd; 10000 10001 10004 10000 10000 10008 pc pi pd pc = (char *)10000; pi = (int *)10000; pd = (double *)10000; printf(" 증가전 pc = %d, pi = %d, pd = %d\n", pc, pi, pd); pc++; pi++; pd++; printf(" 증가후 pc = %d, pi = %d, pd = %d\n", pc, pi, pd); 증가전 pc = 10000, pi = 10000, pd = 10000 증가후 pc = 10001, pi = 10004, pd = 10008 return 0;

포인터의증감연산 변수값변수이름주소 Pd-1 pi-2 pi-1 pc-1 pc-2 a 10 i 3.141592 f <pc <pi 는char int형포인터 > > <pd 는 double 형포인터 > pd pc pi pc+1 pc+2 pi+1 pd+1 pi+2

간접참조연산자와증감연산자 *p++; p가가리키는위치에서값을가져온후에 p를증가한다. (*p)++; p가가리키는위치의값을증가한다. 수식 의미 v=*p++ p 가가리키는값을 v 에대입한후에 p 를증가한다. v = (*p)++ p 가가리키는값을 v 에대입한후에가리키는값을증가한다. v = *++p p 를증가시킨후에 p 가가리키는값을 v 에대입한다. v = ++*p p 가가리키는값을가져온후에그값을증가하여 v 에대입한다.

간접참조연산자와증감연산자 // 포인터의증감연산 #include <stdio.h> int main(void) int i = 10; int *pi = &i; 10 11 i printf("i = %d, pi = %p\n", i, pi); (*pi)++; printf("i = %d, pi = %p\n", i, pi); 0012FF60 0012FF64 pi printf("i = %d, pi = %p\n", i, pi); *pi++; printf("i = %d, pi = %p\n", i, pi); return 0; i = 10, pi = 0012FF60 i = 11, pi = 0012FF60 i = 11, pi = 0012FF60 i = 11, pi = 0012FF64

포인터의형변환 C 언어에서는꼭필요한경우에, 명시적으로포인터의타입을변경할수있다. double *pd = &f; int *pi; pi = (int *)pd;

간접참조연산자와증감연산자 #include <stdio.h> int main(void) char buffer[8]; double *pd; int *pi; char 형포인터를 double 형포인터로변환배열의이름은 char 형포인터이다. pd = (double *)buffer; *pd = 3.14; printf("%f\n", *pd); pi = (int *)buffer; *pi = 123; *(pi+1) = 456; char 형포인터를 int 형포인터로변환 3.140000 123 456 printf("%d %d\n", *pi, *(pi+1)); return 0;

중간점검 포인터에대하여적용할수있는연산에는어떤것들이있는가? int형포인터 p가 80번지를가리키고있었다면 (p+1) 은몇번지를가리키는가? p가포인터라고하면 *p++ 와 (*p)++ 의차이점은무엇인가? p가포인터라고하면 *(p+3) 의의미는무엇인가?

포인터와배열 배열과포인터는아주밀접한관계를가지고있다. 배열이름이바로포인터이다. 포인터는배열처럼사용이가능하다. 배열 포인터

포인터와배열 // 포인터와배열의관계 #include <stdio.h> int main(void) int a[] = 10, 20, 30, 40, 50 ; printf("&a[0] = %u\n", &a[0]); printf("&a[1] = %u\n", &a[1]); printf("&a[2] = %u\n", &a[2]); printf("a = %u\n", a); return 0; &a[0] = 1245008 &a[1] = 1245012 &a[2] = 1245016 a = 1245008

포인터와배열 // 포인터와배열의관계 #include <stdio.h> int main(void) int a[] = 10, 20, 30, 40, 50 ; printf("a = %u\n", a); printf("a + 1 = %u\n", a + 1); printf("*a = %d\n", *a); printf("*(a+1) = %d\n", *(a+1)); return 0; a = 1245008 a + 1 = 1245012 *a = 10 *(a+1) = 20

포인터와배열 포인터는배열처럼사용할수있다. 즉인덱스표기법을포인터에사용할수있다.

포인터를배열처럼사용 // 포인터를배열이름처럼사용 #include <stdio.h> int main(void) int a[] = 10, 20, 30, 40 ; int *p; a[0]=10 a[1]=20 a[2]=30 p[0]=10 p[1]=20 p[2]=30 a[0]=60 a[1]=70 a[2]=80 p[0]=60 p[1]=70 p[2]=80 p = a; printf("a[0]=%d a[1]=%d a[2]=%d \n", a[0], a[1], a[2]); printf("p[0]=%d p[1]=%d p[2]=%d \n\n", p[0], p[1], p[2]); p[0] = 60; p[1] = 70; p[2] = 80; p printf("a[0]=%d a[1]=%d a[2]=%d \n", a[0], a[1], a[2]); printf("p[0]=%d p[1]=%d p[2]=%d \n", p[0], p[1], p[2]); return 0; 변수값변수이름주소 a 60 10 20 70 a[0] a[1] 30 80 a[2] 40 a[3] p p[0] p[1] p[2] p[3]

포인터를사용한방법의장점 포인터가인덱스표기법보다빠르다. Why?: 원소의주소를계산할필요가없다. int get_sum1(int a[], int n) int i; int sum = 0; for(i = 0; i < n; i++ ) sum += a[i]; return sum; 인덱스표기법사용 int get_sum2(int a[], int n) int i; int *p; int sum = 0; p = a; for(i = 0; i < n; i++ ) sum += *p++; return sum; 포인터사용

실습 : 영상처리 디지털이미지는배열을사용하여서저장된다. 이미지처리를할때속도를빠르게하기위하여포인터를사용한다. 이미지내의모든픽셀의값을 10씩증가시켜보자.

실행결과 010 020 030 040 050 010 020 030 040 050 010 020 030 040 050 010 020 030 040 050 010 020 030 040 050 모든픽셀의값이 10 씩증가되었다. 020 030 040 050 060 020 030 040 050 060 020 030 040 050 060 020 030 040 050 060 020 030 040 050 060

실습 : 영상처리 #include <stdio.h> #define SIZE 5 void print_image(int image[][size]) int r,c; for(r=0;r<size;r++) for(c=0;c<size;c++) printf("%03d ", image[r][c]); printf("\n"); printf("\n");

실습 : 영상처리 void brighten_image(int image[][size]) int r,c; int *p; p = &image[0][0]; for(r=0;r<size;r++) for(c=0;c<size;c++) *p += 10; p++;

실습 : 영상처리 int main(void) int image[5][5] = 10, 20, 30, 40, 50, 10, 20, 30, 40, 50, 10, 20, 30, 40, 50, 10, 20, 30, 40, 50, 10, 20, 30, 40, 50; print_image(image); brighten_image(image); print_image(image); return 0;

도전문제 포인터를이용하지않는버전도작성하여보자. 즉배열의인덱스표기법으로위의프로그램을변환하여보자.

배열의원소를역순으로출력 #include <stdio.h> void print_reverse(int a[], int n); int main(void) int a[] = 10, 20, 30, 40, 50 ; print_reverse(a, 5); return 0; 50 40 30 20 10 void print_reverse(int a[], int n) int *p = a + n - 1; // 마지막노드를가리킨다. while(p >= a) // 첫번째노드까지반복 printf("%d\n", *p--); // p가가리키는위치를출력하고감소 p p p p p 변수값 변수이름 주소 10 20 30 40 a[0] a[1] a[3] a[2] 50 a[4]

중간점검 배열의첫번째원소의주소를계산하는 2가지방법을설명하라. 배열 a[] 에서 *a의의미는무엇인가? 배열의이름에다른변수의주소를대입할수있는가? 포인터를이용하여배열의원소들을참조할수있는가? 포인터를배열의이름처럼사용할수있는가?

인수전달방법 C에서의인수전달방법 값에의한호출 : 기본적인방법 참조에의한호출 : 포인터이용

값에의한호출 함수호출시에변수의값을함수에전달 값에의한호출은값만을복사해요. 100 int main(void) int i = 100; 100 i int sub( int v ) 100 v... sub( i );......

참조에의한호출 함수호출시에변수의주소를함수의매개변수로전달 참조에의한호출은주소를복사합니다. 96 int main(void) int i = 100;... sub( &i ); int sub( int *p )...... 100 i 96 93 94 95 96 97 98 99 100 p

swap() 함수 #1 변수 2 개의값을바꾸는작업을함수로작성 #include <stdio.h> void swap(int x, int y); int main(void) int a = 100, b = 200; printf("a=%d b=%d\n",a, b); swap(a, b); printf("a=%d b=%d\n",a, b); return 0; 100 a <main> 2012 생능출판사 All rights reserved 200 100 200 200 100 b 함수호출시에값만복사된다. x y <swap> void swap(int x, int y) int tmp; printf("x=%d y=%d\n",x, y); tmp = x; x = y; y = tmp; printf("x=%d y=%d\n",x, y); a=100 b=200 x=100 y=200 x=200 y=100 a=100 b=200

swap() 함수 #2 포인터를이용 #include <stdio.h> void swap(int x, int y); int main(void) int a = 100, b = 200; printf("a=%d b=%d\n",a, b); swap(&a, &b); printf("a=%d b=%d\n",a, b); return 0; 함수호출시에주소가복사된다. 200 100 &a a 200 100 &b b <main> px py <swap> void swap(int *px, int *py) int tmp; printf("*px=%d *py=%d\n", *px, *py); tmp = *px; *px = *py; *py = tmp; printf("*px=%d *py=%d\n", *px, *py); a=100 b=200 *px=100 *py=200 *px=200 *py=100 a=200 b=100

scanf() 함수 변수에값을저장하기위하여변수의주소를받는다.

2 개이상의결과를반환 #include <stdio.h> // 기울기와 y절편을계산 int get_line_parameter(int x1, int y1, int x2, int y2, float *slope, float *yintercept) if( x1 == x2 ) 기울기와 Y절편을인수로전달 return -1; else *slope = (float)(y2 - y1)/(float)(x2 - x1); *yintercept = y1 - (*slope)*x1; return 0; int main(void) float s, y; if( get_line_parameter(3,3,6,6,&s,&y) == -1 ) printf(" 에러 \n"); 기울기는 1.000000, y절편은 0.000000 else printf(" 기울기는 %f, y절편은 %f\n", s, y); return 0;

배열이함수인수인경우 일반변수 vs 배열 // 매개변수 x에기억장소가할당 void sub(int x)... // b[] 에기억장소가할당되지않는다. void sub(int b[], int n)... 배열의경우, 크기가큰경우에복사하려면많은시간소모 배열의경우, 배열의주소를전달

예제 #include <stdio.h> void sub(int b[], int n); int main(void) int a[3] = 1,2,3 ; 1 2 3 4 5 6 a[0] a[1] a[2] printf("%d %d %d\n", a[0], a[1], a[2]); sub(a, 3); printf("%d %d %d\n", a[0], a[1], a[2]); return 0; void sub(int b[], int n) b[0] = 4; b[1] = 5; b[2] = 6; 1 2 3 4 5 6

포인터를반환할때주의점 함수가종료되더라도남아있는변수의주소를반환하여야한다. 지역변수의주소를반환하면, 함수가종료되면사라지기때문에오류 int *add(int x, int y) int result; result = x + y; return &result; 지역변수 result 는함수가종료되면소멸되므로그주소를반환하면안된다!

중간점검 함수에매개변수로변수의복사본이전달되는것을 라고한다. 함수에매개변수로변수의원본이전달되는것을 라고한다. 배열을함수의매개변수로지정하는경우, 배열의복사가일어나는가?

포인터사용의장점 연결리스트나이진트리등의향상된자료구조를만들수있다. A N C D E A C D E B B 메인메모리 메인메모리 참조에의한호출 포인터를매개변수로이용하여함수외부의변수의값을변경할수있다. 동적메모리할당 17장에서다룬다.

Q & A