• 검색 결과가 없습니다.

C 언어 포인터 정복하기

N/A
N/A
Protected

Academic year: 2022

Share "C 언어 포인터 정복하기"

Copied!
19
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

TAE-HYONG KIM

COMPUTER ENG, KIT

C 언어 포인터 정복하기

(2)

목적

 C 언어에서 가장 어려운 부분은?

포인터(Pointers)!

C 언어의 많은 부분과 연관성을 가짐

 본 강의는 다음 기법을 이용하여 C 포인터 의 개념과 사용법을 명확히 습득하는 것을 목적으로 함

 시각적 모델링

 필요성, 사용법 등의 논리적 설명

 프로그래밍 패턴

2

(3)

강의 구성 (1)

 1강. 들어가기 : C 언어 기초 복습

 2강. 배열로 시작하기

 3강. 포인터 없이 배열 사용하기

 4강. 배열로 문자열 처리하기

 5강. 포인터의 개념 이해하기

 6강. 포인터를 저장하자

 7강. 배열과 포인터의 관계 이해하기

 8강. 포인터로 함수 넘나들기

3

(4)

강의 구성 (2)

 9강. 포인터로 문자열 다루기

 10강. 포인터로 포인터 가리키기

 11강. 포인터로 이차원배열 다루기

 12강. 특별한 자료를 가리키는 포인터

 13강. 메모리에 직접 접근하기

 14강. 구조체의 개념과 특징

 15강. 포인터로 구조체 다루기

 16강. 포인터로 자료 구조화하기

4

(5)

C 언어 포인터 정복하기

TAE-HYONG KIM

COMPUTER ENG, KIT

1강. 들어가기 – C언어 기초 복습

(6)

학습 내용

 C언어 학습

 C언어와 메모리

 자료형

 변수의 사용

 코드의 구성

 연산자

 반복문

 조건문

 함수

6

(7)

C언어 학습

 C 언어도 일종의 언어다

 C 언어를 어떻게 공부해야 할까?

 전통적 방법의 언어 공부 방식

 단어(Word), 문장(Sentence), 문법(Grammar), …

 읽기/쓰기, 듣기/말하기, …

 최근의 실용적 공부 방식

 주요 패턴

방식의 어법(Usage) 연습

 C언어 학습에 적합한 방법은?

7

(8)

C언어와 메모리

 C언어의 특징

 구조적 프로그래밍 언어(고수준)

 컴퓨터 자원에의 접속성 제공(저수준)

 메모리(Main memory)

 기본저장 단위: Byte (문자)

 메모리 접근  메모리 주소로

• 각 바이트에 주소 할당

 데이터 저장 및 처리

• 데이터의 형식과 프로세서에 따라 다름

 프로그램(프로세스) 메모리 영역

 Code(프로그램)

 Data(전역/정적변수) : 0으로 초기화 됨

 Stack(지역/자동변수) : 초기화안됨

 Heap(동적할당)

8

(9)

기본 자료형

 정수형

 char (1B), short (2B), int (4B)

 실수형

 float (4B), double (8B)

 변수 및 상수 모두 특정 자료 형(type)을 가지며 메모 리공간에 정해진 크기로 저장된다

 상수: 저장 공간의 저장 값을 바꿀 수 없음

 변수: 저장 공간의 저장 값을 바꿀 수 있음

 변수의 선언

 어떤 자료형의 어떤 변수(이름)를 사용하는 지 알려줌

(10)

변수의 사용

 1) 변수에 저장된 값을 사용 (R-value로 사용)

 int a = 10, b = 0;

 b = a + 1; printf(“%d”, a);

 값이 변경되지 않음

 2) 저장공간에 값을 저장함 (L-value로 사용)

 int a = 10, b = 0;

 b = a + 1; a++;

 값을 변경하려고 시도함

(11)

코드의 구성

 기본 구성단위는 식(expression)이다

 int a = 10, b = 0;

 a, a+1, printf(…), a = a+1, …

 변수, 상수 그대로도 식이 된다

 식은 식의 값을 갖는다.

 식은 연산(자), 함수(호출)에 의해 확장된다

 기본 실행단위는 문장(statement)이다

 식 + ‘;’  문장이 된다

 {문장1 문장2}  한 문장으로 만들 수 있다

 특정 구조의 문장: if 문장(조건문), for 문장(반복문), …

(12)

연산자

 정수 연산자

 %: 나머지

 /: 정수/정수  정수

• 실수/정수, 정수/실수, 실수/실수  실수

 증감연산자

연산자 연산 예 변수(a)값 식의값 결합성 ++a printf(“%d”, ++a) 1증가 증가된 a값  a++ printf(“%d”, a++) 1증가 증가전 a값  --a printf(“%d”, --a) 1감소 감소된 a값  a-- printf(“%d”, a--) 1감소 감소전 a값 

(13)

반복문

 while (반복조건식) 반복문장

 do

반복문장

while (반복조건식)

 for (최초실행식; 반복조건식; 최종실행식) 반복문장

 break 문, continue 문

(14)

조건문

 if (실행조건식) 실행문1

[else

실행문2]

 switch (정수식) { case 정수값1:

실행문1

default:

실행문n }

 break 문 사용

(15)

함수 (1)

 C의 구조적 프로그래밍 단위: 모듈(module)

 main()도 함수이다.

 함수는 다른 함수를 호출할 수 있다.

 호출관계 ≠ 계층관계

 모든 함수는 동일한 레벨이다

 C 표준 라이브러리 함수

 printf(), scanf()  이미 “정의”되어 제공되는 함수

 헤더파일(.h), 라이브러리(.lib) 파일

15

(16)

함수 (2)

 형식

16

return-type function_name (parameter type list) {

declarations statements }

함수 수행이 끝난 후 반환(Return) 되는 값의 자료형(data type)

함수에 전달되는

인자(argument)의 수와 자료형

함수 몸체

(Function body) 함수 헤더

(Function Header)

(17)

함수 (3)

 함수 원형(prototype)

 함수를 호출(사용)하기 위해서는 함수 호출 이전에

(위에서) 함수가 선언되어 있어야 함

• 변수 사용 이전에 선언이 필요한 것과 마찬가지

 함수의 선언을 위해 필요한 것: 함수 헤더 정보

• 함수 이름

• 각 인자의 자료형 (없을 경우 void)

• 반환값의 자료형 (없을 경우 void)

 Top-down 방식은 함수의 정의가 호출 뒤에 오므로 미

리 함수를 선언(원형 정보)해 주어야 함

 기본 라이브러리 함수는 선언을 위해 헤더파일 필요

17

(18)

함수 (4)

 함수의 인자

 함수 내의 지역 변수와 동일

 함수의 지역변수는 함수가 반환될 때 해제됨

 함수의 인자호출 방법

 Call by value

• 인자에 값이 복사된다  내부에서만 이용

 Call by reference

• 인자에 포인터(함수 외부 메모리)가 복사된다

• 함수 밖의 메모리(변수) 값을 변경할 수 있다

18

(19)

다음 강의 소개

 2강. 배열로 시작하기

 배열 개념 이해하기

 배열 사용법 익히기

 배열을 함수로 전달하기

 기본 배열 확장하기

 확장된 배열 다루기

19

참조

관련 문서

[r]

포인터 new의 값을 포인터 temp가 가리키고 있는 마지막 노드의 링크에 저장하여, 리스트의 마지막 노드가 노드 new를 가리키게 한다..

XML 문서 내를 여러 가지 마크업 언어로 작성할 때, 동일 한 이름을 가지고 있는 엘리먼트가 각기 다른 마크업 언어 에서 같이 사용될

그런데 내가 해방이 되어서 고향에 돌아와 보니까, 아니 어디 숨어 있는 줄 알았던 그가 아주 요란스럽게 행세를 하고 있었어.. 바로 교장

실행 중인

이는 오류가 그만큼 줄어들었음을 의미한다..

 Goddard, C.(2005), The Languages of East and Southeast Asia: An Introduction, OUP...

② 한국어는 대명사의 사용이 제한된 언어, 대명사가가 발달하 지 않은 언어. 예) 우리 아버지는 강원도에서 태어나셨습니다..