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

Similar documents
Data Structure

untitled

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

11장 포인터

Microsoft PowerPoint - 2주_강의노트

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

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

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

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - chap06-2pointer.ppt

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

슬라이드 1

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

Microsoft PowerPoint - 제11장 포인터

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

02장.배열과 클래스

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 - chap-11.pptx

PowerPoint 프레젠테이션

OCW_C언어 기초

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

Microsoft PowerPoint - chap06-1Array.ppt

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

설계란 무엇인가?

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

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

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

: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print

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

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - ch07 - 포인터 pm0415

쉽게 풀어쓴 C 프로그래밍

PowerPoint Template

PowerPoint Presentation

OCW_C언어 기초

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

untitled

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

8장. 포인터

untitled

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chapter_08.pptx

ch15

歯9장.PDF

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - Chapter 6.ppt

중간고사

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

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

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

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Microsoft PowerPoint - chap-03.pptx

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

쉽게 풀어쓴 C 프로그래밍

chap10.PDF

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

Microsoft PowerPoint - Lesson2.pptx

Infinity(∞) Strategy

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

Microsoft PowerPoint - Chapter_04.pptx

Microsoft PowerPoint - chap12-고급기능.pptx

PowerPoint Template

03장.스택.key

C 프로그램의 기본

K&R2 Reference Manual 번역본

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

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

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

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

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


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

ABC 6장

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

11장 포인터

C 프로그래밊 개요

Microsoft PowerPoint - C++ 5 .pptx

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

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - 04_C_Language_Function

PowerPoint Presentation

PowerPoint Presentation

, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float

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

Microsoft PowerPoint - Chapter 1-rev

Data Structure

ABC 2장

Microsoft PowerPoint - chap04-연산자.pptx

C 프로그래밊 개요

C++ Programming

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

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

설계란 무엇인가?

PowerPoint 프레젠테이션

Transcription:

C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과

14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2

14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include <stdio.h> void fct(int *arr2); int arr1[2]=1, 2; fct(arr1); printf("%d \n", arr1[0]); void fct(int *arr2) printf("%d \n", arr2[0]); arr2[0]=3; Department of Computer Engineering 3

14-1 함수의인자로배열전달 배열이름, 포인터의 sizeof 연산 배열이름 : 배열전체크기를바이트단위로반환 포인터 : 포인터의크기 (4) 를바이트단위로반환 #include <stdio.h> int arr[5]; int* parr=arr; printf( %d \n, sizeof(arr) ); printf( %d \n, sizeof(parr) ); Department of Computer Engineering 4

14-1 함수의인자로배열전달 #include <stdio.h> int ArrAdder(int *, int); int main() int arr[10] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10; int SumOfArr; SumOfArr = ArrAdder(arr, sizeof(arr)/sizeof(int)); printf( 배열의총합 : %d\n, SumOfArr); int ArrAdder (int * parr, int n) int sum = 0; for (int i=0; i<n; ++i) sum += parr[i]; return sum; 배열의길이도전달 Department of Computer Engineering 5

14-1 함수의인자로배열전달 "int * parr" vs. "int parr[ ]" 둘다같은의미를지닌다. 선언 "int parr[ ]" 은함수의매개변수선언시에만사용가능 int function(int parr[]) int a=10; parr=&a; // parr 이다른값을지니게되는순간 return *parr; Department of Computer Engineering 6

14-2 호출방식 Call-By-Value 값의복사에의한함수의호출 가장일반적인함수호출형태 #include <stdio.h> int add(int a, int b); C 동영상강좌중에서포인터부분을 CD 에구워서준다. int val1=10; int val2=20; printf(" 결과 : ", add(val1, val2)); int add(int a, int b) return a+b; Department of Computer Engineering 7

14-2 호출방식 Call-By-Value 에의한 swap int val1=10; int val2=20; swap(val1, val2); 여기에선안바뀜 printf("val1 : %d \n", val1); printf("val2 : %d \n", val2); void swap(int a, int b) int temp=a; a=b; b=temp; printf("a : %d \n", a); printf("b : %d \n", b); Department of Computer Engineering 8

Call-By-Reference 14-2 호출방식 C 동영상강좌의네트워크주소를알려준다. 참조 ( 참조를가능케하는주소값 ) 를인자로전달하는형태의함수호출 Department of Computer Engineering 9

14-2 호출방식 Call-by-Reference 에의한 swap int val1=10; int val2=20; printf("before val1 : %d \n", val1); printf("before val2 : %d \n", val2); swap(&val1, &val2); //val1, val2 주소전달 printf("after val1 : %d \n", val1); printf("after val2 : %d \n", val2); void swap(int* a, int* b) int temp=*a; *a=*b; *b=temp; 따라바뀜 Department of Computer Engineering 10

14-2 호출방식 scanf 함수호출시 & 를붙이는이유 case 1 case 2 int val; scanf("%d", &val);..... char str[100]; printf(" 문자열입력 : "); scanf("%s", str);..... Department of Computer Engineering 11

14-3 포인터와 const 포인터가가리키는변수의상수화 int a = 10; const int * p = &a; *p=30 // Error! a=30 // OK! 포인터상수화 int a=10; int b=20; int * const p = &a; p=&b // Error! *p=30 // OK! p 를통한 a 값변경금지 P 가가리키는주소변경금지 Department of Computer Engineering 12

14-3 포인터와 const const 키워드를사용하는이유 컴파일시잘못된연산에대한에러메시지 프로그램을안정적으로구성 #include <stdio.h> float PI=3.14; float rad; PI=3.07; // 분명히실수!! #include <stdio.h> const float PI=3.14; float rad; PI=3.07; // Compile Error 발생! scanf("%f", &rad); printf(" 원의넓이는 %f \n", rad*rad*pi); scanf("%f", &rad); printf(" 원의넓이는 %f \n", rad*rad*pi); Department of Computer Engineering 13

연습문제 다음함수에서 const 의역할은? void print (const int* arr, int size) int i; for (i=0; i<size; ++i) printf( %d, arr[i]); 문제점을찾아보자. void print (const int* ptr) int *p = ptr; *p = 20; printf( %d, *ptr); arr 을통한배열요소변경금지 const int * 타입은 int * 로대입이허용되지않음 const int * 로는대입이허용됨 Department of Computer Engineering 14

Summary 함수내에서값을바꾸고그값을호출한놈이써야한다면포인터를써라. Call-By-Reference 라고한다. Call-By-Value int val = 10; fct(val); void fct(int a) 가능하면변경된값은리턴값으로받으려고노력할것. 넘겨준값을함수내에서바꾸는 Side Effect( 부작용 ) 는좋지않음 Call-By-Reference int val = 10; fct(&val); void fct(int *pval) 여러개의값을함수로부터받을때는사용해야함 복사 값을변경할수없도록하려면 const 키워드를사용한다. Department of Computer Engineering 15