Presentation on theme: "개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay."— Presentation transcript: 1 개정판 누구나
즐기는 C언어 콘서트 제9장 포인터 출처: pixabay 2 이번 장에서는 포인터의 기초적인 지식을 학습한다. 3 이번 장에서 만들 프로그램
4 포인터란? 포인터(pointer): 주소를 가지고 있는 변수 집
5 메모리의 구조 변수는 메모리에 저장된다. 메모리는 바이트 단위로
액세스된다.
6 변수와 메모리 변수의 크기에 따라서 차지하는 메모리 공간이 달라진다. char형 변수: 1바이트, int형 변수: 4바이트,…
7 변수의 주소 변수의 주소를 계산하는 연산자: & 변수 i의 주소: &i
8 변수의 주소 int main(void) { int i = 10; char c = 69; float f = 12.3;
9
포인터의 선언 포인터: 변수의 주소를 가지고 있는 변수 *p가 가리키는 내용은 정수가 된다. 10 포인터와 변수의 연결 int number = 10; // 정수형 변수 number
선언 11 포인터와 변수 포인터 p가 변수 number를 가리킨다. int number = 10; // 정수형 변수 number 선언
12
간접 참조 연산자 간접 참조 연산자 *: 포인터가 가리키는 값을 가져오는 연산자 int i=10; int *p; p =&i; 13 포인터 연산자
14 & 연산자와 * 연산자 & 연산자: 변수의 주소를 반환한다 * 연산자: 포인터가 가리키는 곳의 내용을 반환한다. 15 예제 #1 #include <stdio.h> int
main(void) { int number = 10;
16 예제 #2 #include <stdio.h> int main(void) { int number = 10; 17 중간 점검 메모리는 어떤
단위를 기준으로 주소가 매겨지는가? 포인터도 변수인가? 18 포인터 연산 ++p; 가능한 연산: 증가, 감소, 덧셈, 뺄셈 연산
19 증가 연산 예제 #include <stdio.h> int main(void) { char *pc; int *pi;
20 포인터의 증감 연산
21 간접 참조 연산자와 증감 연산자 *p++; p가 가리키는 위치에서 값을 가져온 후에 p를 증가한다. (*p)++;
22 함수와 포인터 다른 사람에게 넘겨주어야 하는 정보가 상당히 방대하다고 하자. 이 런 경우에는 전체를 복사해서 주는 것보다는 페이지 수만 알려주는 편이 간결할 수 있다.
23 함수 호출시 인수 전달 방법 값에 의한 호출(call-by-value) C의 기본적인 방법 인수의 값이 매개 변수로 복사된다.
24 값에 의한 호출 #include <stdio.h> void modify(int value) { value = 99; 25 참조에 의한 호출 #include <stdio.h> void modify(int *ptr) { 26 swap() 함수 #1 변수 2개의 값을 바꾸는 작업을 함수로 작성 int main(void) {
27 swap() 함수 #2 포인터를 이용 int main(void) { int a = 100, b = 200; 28 29
30 포인터 사용시 주의점 초기화가 안된 포인터를 사용하면 안된다. int main(void)
{
31 포인터 사용시 주의점 포인터가 아무것도
가리키고 있지 않는 경우에는 NULL로 초기화
32 포인터 사용시 주의점 포인터의 타입과 변수의 타입은
일치하여야 한다. #include <stdio.h>
33 포인터와 배열 배열과 포인터는 아주 밀접한 관계를 가지고 있다. 배열 이름이 바로 포인터이다. 34 포인터와 배열 #include
<stdio.h> int main(void) {
35 포인터를 배열처럼 사용 포인터도 배열이름처럼 간주될 수 있고 배열과 똑같이 사용할 수 있 다. 36 포인터와 배열 #include <stdio.h> int
main(void) {
37 어디에 사용될까? #include <stdio.h> void sub(int *ptr) {
38 Lab: 유용한 배열 함수 작성 정수 배열에 대하여 평균을 계산하고 배열을 출력하는 함수를 작성 하고 사용해보자.
39 Sol: #include <stdio.h> #define SIZE 5
40 Sol: // 배열 요소의 평균을 계산하는 함수 double get_array_avg(int values[], int n) { 41 Q & A |