제 8 장 포인터.

Slides:



Advertisements
Similar presentations
 사회  4 학년 1 학기  1. 우리 시ㆍ도 모습 > (1) 지도에 나타난 우리 시. 도의 모습 (2/17) 지도를 알아보자 (1)
Advertisements

녹는점과 끓는점 화학과 이 언정 손 나영 《수업 계획서》
아동이 살기 좋은 횡성군 만들기 추진위원회 2차 모임
& 국민연금법 국민건강보험법 사회복지법제 행정학부 김인철 사회복지학과 김건우
시대의 향기를 담은 고수필 고전문학원전강독 신태웅 김수연 이진솔.
Power C++ 제6장 포인터와 문자열.
December 2011년 성주초 5학년2반 기념 달력 소비자의날 4 5 자원봉사자의날 6 7 대설
Sun Mon Tue Wed Thu Fri Sat
1 January 2 February 3 March 4 April 5 May 6 June 7 July 8 August
2013 January 2012년 도원초 4학년1반 기념 달력 1신정
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express Slide 1 (of 25)
C로 쉽게 풀어쓴 자료구조 © Copyright 생능출판사 2005
제 2 장 배열과 스트링.
Part 12 구조체와 공용체 ©우균, 창병모 ©우균, 창병모.
구조체 활용 구조체 활용.
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express.
DP&NM Lab Time Table (Spring 2006) MON TUE WED THU FRI SAT 9:00 10:00
Chapter 03 배열, 구조체, 포인터.
C언어: 배열 (Arrays).
★2017 Malaysia Summer Camp★ *7월23일~8월19일(4주 (방과후 개인교재,비행기 별도)
CHAP 3:배열, 구조체, 포인터.
제 3 장. 배열과 구조체 및 포인터.
head data link data link data link NULL a b c
자료 구조: Chapter 3 (2)구조체, 포인터
위모트 컨트롤을 이용한 “볼링” 학번: 이름: 김바울.
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
동적메모리와 연결리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
[INA240] Data Structures and Practice
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
User Manual(사용설명서) Ver3.1_120427
Dynamic Memory and Linked List
프로그래밍2 및 실습 C언어 기반의 C++ 2.
전사 회의체 운영 방안 Table of Contents 경영관리실 기획팀 Ⅰ. 전사 회의체 운영 현황
10월 Sun Mon Tue Wed Thu Fri Sat 중국 National Birthday 6 7 8
1 January 2 February 3 March 4 April 5 May 6 June 7 July 8 August
Work Progress ’ 나소라, 윤민.
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
23강 API - II - 약방의 감초 Random 클래스 - Scanner 및 Sysout - Wrapper 클래스의 이해
★ 2015 석우초 4분기 방과후학교 영어교실 등록안내 ★
1차 발표: 프로젝트 소개 학번: 이름: 이철환.
Project Specification - 학사관리 시스템 과제 2번
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 11. 1차원 배열.
November 일 월 화 수 목 금 토
좀비 . 그들과의 전쟁이 시작되었다. 마우스를 이용해서 집을 지킬 식물을 설치
신제품 개발의 정의 고객의 Needs & Wants 마케팅 활동의 출발은 신제품 개발로부터 시작합니다.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 05. 상수와 기본 자료형.
4장 자료형.
학습목표 Chapter 2-1. 변수와 포인터 변수의 선언과 변수에 대한 메모리 할당을 살펴본다.
1차 발표: 프로젝트 발표 학번: 이름: 권창민 1.
Pre-Production Meeting Book
C89(C++03) 프로그래밍 (Part 2) 7 배열 8 변수 범위 9 포인터 10 유도 자료형.
재활용의 실태와 재활용품 만들기의 계획 실과 6학년 8 . 환경을 살리는 나의 생활> 2) 재활용품 만들기(5~6/8)
자바 5.0 프로그래밍.
2D 게임 프로그래밍 프로젝트 1차 발표 학번 : 이름 : 김태원.
2D game programing Demo 김태원.
토론을 위한 질문 배열의 이름에는 무엇이 저장되는가? C언어에서 배열 추상데이터의 store는 어떻게 구현 되는가?
아동안전관리 홍성훈 교수님 아동보육학과 박윤희
자료구조 세미나 발표 주제: 자료구조 기초 - 1회 차: 자료구조의 정의, 기초 지식 (함수, 포인터, 레퍼런스)
제 10장 가족치료모델 발 표 : 여금란.
성공적인 입사지원서 작성법 제이비커리어 교육수석 소 은 선.
▶서류관리 프로그램 1. 로그인….2 2. 서류등록 … 서류도착 서류스티커발행
1차 발표: 프로젝트 발표 학번: 이름: 박진완.
개정판 누구나 즐기는 C언어 콘서트 제11장 구조체, 공용체, 열거형 출처: pixabay.
KSA 콜센터 교육일정 안내 2018년 3월 인세일즈 입문 콜센터 엑스퍼트 수퍼바이저(자격)
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 02. C언어 기반의 C++ 2.
POWER POINT TEMPLATE 2019 CALENDAR.
배열.
11장. 1차원 배열.
Presentation transcript:

제 8 장 포인터

목 차 메모리와 포인터 포인터의 종류 포인터와 배열 포인터의 포인터 함수와 포인터

메모리와 포인터(1) 변수와 주소 포인터란 ? 포인터의 사용 변수 또는 기억장치 위치의 주소를 표현하는 수식 자료형에 의하여 직접 제어 빠른 엑세스 속도 재귀적 지정이 가능 포인터의 사용 호출 프로그램 내에서 변수 변경할 수 있는 함수 구축 시 배열 처리 함수내의 메모리를 동적으로 배열할 경우 연결 리스트와 같은 자료 표현을 구축할 경우

메모리와 포인터(2) 변수와 주소(계속) 메모리상의 주소와 변수의 관계

메모리와 포인터(3) 변수와 주소(계속) 형식 예 자료형 *포인터변수명; 포인터변수명 = &일반변수명; *포인터변수명 = 일반변수명 ; 예 nt num, *p_num; //p_num은 주소 저장 포인터형 변수 p_num = &num;  //p_num에 num의 주소값 할당 *p_num = num;   //p_num의 주소에 num값 할당

메모리와 포인터(4) 포인터 연산 할당연산, 사칙연산, 증감연산 할당 연산 포인터에 배열 데이터를 할당 “&” 연산자를 사용 int *p, d; p = &d; 포인터에 배열 데이터를 할당 변수명을 사용 포인터는 그 배열의 첫 메모리 번지를 지정 int *p, d[4]; p = d; 포인터 위치의 자료 값을 얻고자 할 경우 * 연산자를 사용 d = *p;

메모리와 포인터(5) 포인터 연산(계속) 사칙연산 해당 데이터를 포인터형 만큼 이동하는 데에 사용 예 char형은 1바이트, int형은 2(4)바이트 포인터 안의 자료 값을 사칙연산 (*변수) 형태 (*p)+20; (*p)가 가리키는 자료의 값에 20을 더함

메모리와 포인터(6) 포인터 연산(계속) 증감연산 sizeof() 연산자 “++”, “--” 이용 p++ *p++ (*p)++ 메모리의 위치가 해당 포인터형 만큼 증가 *p++ p++가 먼저 이루어지고 다음에 *기호가 붙는 형태 p의 메모리 번지가 먼저 증가 그 증가된 메모리의 번지 내의 데이터 값 (*p)++ 해당 데이터가 증가 sizeof() 연산자

포인터의 종류(1) char 포인터 문자 혹은 문자의 주소를 가리키는 것 주로 문자열을 컨트롤할 경우 많이 사용 문자열인 경우 할당할 자료보다 크기가 1이 크게 형식      char *포인터변수명;     //선언      포인터변수명 = 배열명;  //배열을 포인터로 받기 예      char *p;      char univ[5]={"HKNU"}; //끝에 Null 문자 자동 삽입      p = univ;

포인터의 종류(2) char 포인터(계속) 메모리상의 문자열 할당 예

포인터의 종류(3) char 포인터(계속) 문자열의 배열과 포인터 변수의 차이 문자열의 배열 포인터 변수 선언방법     문자열의 배열   포인터 변수 선언방법 char str[]; char *str 초 기 화 static char str []="Lee"; char *str = "Lee"; 자료길이 고정 가변  요소참조 str[i] (i=0, 1, 2, 3…) *(str +i) (i=0, 1, 2, …) 값  할당 str[0]='C';… str= "POINTER" 시작번지 str 번지연산 불가능 가능 (예: str++) 속    도 포인터 변수보다 느리다  상대적으로 빠르다

포인터의 종류(4) int 포인터 2(4)바이트에 1개의 int형 자료가 할당 2(4)바이트 크기로 주소값이 증가 형식 예 포인터변수명 = 배열명;  //배열을 포인터로 받기 예 int *p, univ[2]={99, 100}; p = univ;

포인터의 종류(5) int 포인터 int 포인터의 메모리 할당

포인터의 종류(6) float 포인터 4(8)바이트에 1개의 float형 자료가 할당 4(8)바이트 크기로 주소값이 증가 형식 포인터변수명 = 배열명;  //배열을 포인터로 받기 예 float *p; float pi[2]={3.14, 3.1415}; p = pi;

포인터의 종류(7) float 포인터(계속) float 포인터의 메모리 할당

포인터와 배열(1) 포인터와 배열은 메모리에 직접 접근 포인터 이용이 배열보다 고속 함수 인자용 배열 처리 위해 포인터가 필요 배열은 메모리 배열 영역에 영역을 고정 확보 포인터 변수는 변수의 영역에 유동적 확보 포인터 변수는 값이 결정될 때 메모리 확보

포인터와 배열(2) 포인터 배열 포인터도 일종의 자료형이므로 배열 처리 가능 포인터 자체가 배열로 존재 배열 요소 액세스 시 첨자 계산 않고 간접 액세스 배열 내 형의 크기를 다르게 사용 가능 단점 포인터를 기억할 장소 추가 필요 각 포인터의 초기치를 설정하는 단계가 필요

포인터와 배열(3) 포인터 배열(계속) 예 int *p[5], data[5][10]; p[0] = data[0], p[1] = data[1];

포인터와 배열(4) 상수 포인터 배열 문자형 상수, 숫자형 상수 포인터 배열로 구분 문자열 상수 포인터 배열은 문자형의 포인터 배열 변수를 선언 후 초기치를 할당 예 static char *week[] = {"sun", "mon", "tue", "wed", "thu", "fri", "sat"}; 숫자형 상수 포인터 전체 블록 { }으로 표시 후 해당 배열만큼 숫자값을 할당 실제 한 개가 2(4)byte의 1차원 배열의 형태 각 포인터가 한 개의 값 소유

포인터와 배열(5) 동적 메모리 포인터 모리를 동적으로 할당 해당 메모리를 포인터 배열 이용 지정 malloc() 함수를 사용 int형으로 선언된 배열의 크기를 먼저 입력 반복문 이용 malloc()함수에 의해 메모리를 할당 빈 메모리 공간에 각각 데이터를 입력 free() 함수를 이용 반드시 메모리 해제

포인터와 배열(6) 다중 포인터 배열 포인터 배열을 2차원 이상으로 확장 한 것 형식 예 자료형 *포인터변수명[첨자][첨자]; char *char_p[5][5] 1111

포인터의 포인터(1) 포인터의 포인터 이중 포인터 형식 예 포인터 자료를 가리키는 포인터 자료형 **포인터변수명; char data[], *p[], **double_p; p=data; double_p = p;

포인터의 포인터(2) 포인터의 포인터(계속) 실 예 int data, *p, **pp; data=100; p=&data;

포인터의 포인터(3) 다중 포인터 포인터가 2개 이상인 경우 실제로 다중 포인터를 많이 사용하지 않음 3D 자료의 처리가 많은 분야의 자료 처리용 예 char buff[256], ***student_p; student_p=(char ***)malloc(sizeof(char **)*num); student_p[i]=(char **)malloc(sizeof(char *)*3); student_p[i][0]=(char *)malloc(len); strcpy(student_p[i][0],buff);

포인터의 포인터(4) 동적 포인터의 포인터 포인터의 포인터에 포인터 자료를 저장할 메모리를 할당하고, 이 각각의 포인터에 포인터를 설정하는 것 예 char **p; p=(char **)malloc((char *)*3); for(i=0;i<3;i++) p[i]=(char *)malloc(8); .... for(i=0;i<3;i++) free(p[i]); free(p);

함수와 포인터(1) 함수에 함수를 매개변수로 전달 할 때 사용 형식 예 호출쪽 : 자료형 *함수명 호출쪽  : 자료형  *함수명 함수쪽  : 자료형  *함수명(형식매개변수 list) 예

함수와 포인터(2) 함수 포인터의 사용 우선순위 1. int *func(); 2. int (*func)();    int형 포인터를 되돌려주는 함수로서 int *(func())와 같다. 2. int (*func)();    func는 int형을 되돌려주는 함수에 대한 포인터이다. 3. int(*func [])();    func는 int형을 되돌려주는 함수에 대한 포인터들로 된 배열이며 int *func[](0와 같다.