14장. 포인터와 함수에 대한 이해.

Slides:



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

ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
쉽게 풀어쓴 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;
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
컴퓨터 프로그래밍 기초 [Final] 기말고사
-Part2- 제3장 포인터란 무엇인가.
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
6장. printf와 scanf 함수에 대한 고찰
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 14. 포인터와 함수에 대한 이해.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
C 프로그래밍.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
포인터 활용 포인터 활용.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
프로그래밍2 및 실습 C언어 기반의 C++ 2.
11장. 1차원 배열.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
13. 포인터와 배열! 함께 이해하기.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 11. 1차원 배열.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
상수와 기본 자료형.
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
제어문 & 반복문 C스터디 2주차.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
제 1 강.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
Chapter 11. 배열과 포인터.
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
18장. 다차원 배열 그리고 포인터.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
Summary of Pointers and Arrays
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
어서와 C언어는 처음이지 제16장.
17장. 포인터의 포인터.
C 프로그래밍은 매우 도전적인 작업이다. 도전의 이면에 철저한 준비와 체계적인 노력
13. 포인터와 배열! 함께 이해하기.
Pointers summary.
배열, 포인터, 함수 Review & 과제 1, 2.
11장. 1차원 배열.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

14장. 포인터와 함수에 대한 이해

14-1 함수의 인자로 배열 전달하기 기본적인 인자의 전달 방식 값의 복사에 의한 전달 그림 14-1

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

14-1 함수의 인자로 배열 전달하기 배열 이름, 포인터의 sizeof 연산 14-1 함수의 인자로 배열 전달하기 배열 이름, 포인터의 sizeof 연산 배열 이름 : 배열 전체 크기를 바이트 단위로 반환 포인터 : 포인터의 크기(4)를 바이트 단위로 반환 arr_adder.c 참조 #include <stdio.h>   int main(void) { int arr[5]; int* pArr=arr; printf(“%d \n”, sizeof(arr) ); // 20 출력 printf(“%d \n”, sizeof(pArr) ); // 4 출력  return 0; }

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

14-2 Call-By-Value와 Call-By-Reference 값의 복사에 의한 함수의 호출 가장 일반적인 함수 호출 형태 #include <stdio.h>  int add(int a, int b);   int main(void) { int val1=10; int val2=20; printf(" 결 과 : ", add(val1, val2); return 0; }  int add(int a, int b) return a+b; }

14-2 Call-By-Value와 Call-By-Reference Call-By-Value에 의한 swap int main(void) { int val1=10; int val2=20;  swap(val1, val2);   printf("val1 : %d \n", val1); printf("val2 : %d \n", val2);  return 0; }  void swap(int a, int b) int temp=a; a=b; b=temp; printf("a : %d \n", a); printf("b : %d \n", b); } 그림 14-5

14-2 Call-By-Value와 Call-By-Reference 참조(참조를 가능케 하는 주소 값)를 인자로 전달하는 형태의 함수 호출 그림 14-6

14-2 Call-By-Value와 Call-By-Reference Call-By-Reference에 의한 swap int main(void) { 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);  return 0; }  void swap(int* a, int* b) int temp=*a; *a=*b; *b=temp; } 그림 14-7

14-2 Call-By-Value와 Call-By-Reference scanf 함수 호출 시 &를 붙이는 이유 case 1 case 2 int main(void) { int val; scanf("%d", &val); . . . . . int main(void) { char str[100];   printf("문자열 입력 : "); scanf("%s", str); . . . . .

14-3 포인터와 const 키워드 포인터가 가리키는 변수의 상수화 포인터 상수화 그림 14-8 그림 14-9 int a = 10; const int * p = &a; *p=30 // Error! a=30 // OK!  그림 14-8 int a=10; int b=20; int * const p = &a; p=&b // Error! *p=30 // OK! 그림 14-9

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