C언어 및 실습 C Language and Practice

Similar documents
슬라이드 1

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

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

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

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

Microsoft PowerPoint - chap06-2pointer.ppt

슬라이드 1

제4장 기본 의미구조 (Basic Semantics)

OCW_C언어 기초

PowerPoint Presentation

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

OCW_C언어 기초

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint Presentation

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

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

PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

PowerPoint 프레젠테이션

PowerPoint Presentation

C 프로그램의 기본

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

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

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

쉽게 풀어쓴 C 프로그래밍

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - 04_C_Language_Function

Microsoft PowerPoint - chap08-1 [호환 모드]

PowerPoint Template

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

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

Microsoft PowerPoint - chap06-1Array.ppt

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

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

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

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

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

Microsoft PowerPoint - chap12-고급기능.pptx

untitled

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

JVM 메모리구조

Microsoft PowerPoint - chap01-C언어개요.pptx

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

OCW_C언어 기초

Microsoft PowerPoint - Chapter 1-rev

PowerPoint Presentation

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - Chapter_04.pptx

PowerPoint 프레젠테이션

11장 포인터

Microsoft PowerPoint - Chapter 6.ppt

Microsoft PowerPoint - chap-09.pptx

Microsoft PowerPoint - [2009] 02.pptx

PowerPoint 프레젠테이션

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

PowerPoint Template

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

슬라이드 1

Microsoft PowerPoint - chap-03.pptx

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

슬라이드 1

Microsoft PowerPoint - ch 전처리기, 다중 소스파일 pm1015

<4D F736F F F696E74202D20C1A639C0E520C7D4BCF6BFCDBAAFBCF6>

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

Slide 1

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

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - C++ 5 .pptx

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

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

Microsoft PowerPoint - 2장 변수와 자료형 pptx

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

JAVA PROGRAMMING 실습 02. 표준 입출력

02장.배열과 클래스

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

C# Programming Guide - Types

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Lesson2.pptx

쉽게 풀어쓴 C 프로그래밍

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

본 강의에 들어가기 전

쉽게

컴파일러

슬라이드 1

ABC 2장

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

슬라이드 1

기초컴퓨터프로그래밍

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

슬라이드 1

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

PowerPoint 프레젠테이션

MPLAB C18 C

PowerPoint 프레젠테이션

Transcription:

C언어 및 실습 C Language and Practice Chap. 2 : 변수의 영역 동국대학교 멀티미디어공학과 Young-Sik Jeong

C 언어메모리구조 지역변수들이저장되는곳. 정확히는지역변수와그에따른환경이같이저장된다. 복귀주소와호출함수의환경이저장된다. 동적기억장소를위한공간. 프로그램이실행되는중간에필요에의해서할당받는메모리영역을통칭한다. 크기가정해져있지않고유동적이다. 일반적으로 BSS 위쪽에존재한다. BSS(Block Started by Symbol) 초기화하지않은변수들의대한집합체. 메모리상공간만잡아놓고초기화시키지않는다. 실제로 BSS 영역에는어느정도의공간크기를저장할것이라는정보를저장한다. 그후런타임시에 Memory 에링크되어올라간후세그먼트로바뀔때영역이확보된다. data 영역은초기에사용할메모리를확보하는반면, BSS 영역에서는런타임후에야메모리영역이확보된다. CPU 에의해서수행되는기계어가있는곳으로읽기전용이다. 프로그램에서초기화된데이터들이모여있는장소이다. 프로그램실행도중자유롭게접근하여수정및변경이가능하다. ( 보통초기화된전역변수와정적변수가위치 ) 2

변수의영역 기억클래스 (storage class) 변수 주기억장치와레지스터중의어느곳에기억되는가를결정 변수의유효범위를결정 유효범위 : 한변수의저장장소, 프로그램에이변수가미치는범위및어떤기억장치를점유하는시간범위 Storage Class 저장장소변수의참조 (scope) 변수의생명 (life) 초기화하지않은경우변수에자동으로할당되는값 Register 변수 ( 레지스터 ) CPU 내의레지스터영역 선언된 block 내선언된 block 내쓰레기값 Auto( 자동 ) 변수 stack 선언된 block 내선언된 block 내쓰레기값 Static internal ( 내부정적 ) 변수 Static external ( 외부정적 ) 변수 Extern ( 외부 ) 변수 메모리상의데이터영역 선언된 block 내프로그램전체 0 source file 프로그램전체 0 프로그램전체프로그램전체 0 3

변수의영역 자동변수 (auto) 함수또는블록내에서만유효한지역변수 (local variable), stack 내에저장됨 자동변수의사용예 auto 변수선언 ; auto int a; /* int a; */ auto int b = 32; /* int b=32; */ auto char ch = c ; /* char ch = c; */ 프로그램의블록내의맨상단에기억클래스를선언하지않은변수 컴파일러는자동변수로간주 유효범위 선언되는블록내로한정, 프로그램수행이해당블록을벗어나면변수는미존재 자동변수가필요하지않을시기억장소를점유하지않음 어떤함수에국한된지역변수이기때문에다른함수의값을변경시킬수없음 안정성유지 4

변수의영역 레지스터변수 (register) 변수를메모리보다더빠르게처리하기위해사용 레지스터 ( 범용레지스터 :8 개 ) 에기억하는변수 레지스터변수의사용 register 변수선언 ; register int a; register int b = 32; register float c = 2.8; 주기억장치 (main memory) 에기억된데이터를처리하는것보다는레지스터의내용을처리하는것이더빠르다 => 프로그램의수행속도증가 유효범위 : 선언되는블록내로한정, 프로그램수행이그블록을벗어나면변수는존재하지않음 ( 자동변수와동일 : 국한된지역변수 ) 5

변수의영역 정적변수 (static) 메모리를정적으로할당 프로그램의제어가블록안으로옮겨도이전에기억한값을그대로유지 사용법 static 변수타입변수명 ; 변수의초기화 컴파일시데이터형에따라정해진값으로초기화됨 char : \0 int : 0 float or double : 0.0 유효범위 프로그램종료시까지데이터를가지고있음 어떤함수내에존재하는경우 함수를호출할때마다이전에적용된값을계속해서사용가능 6

변수의영역 외부변수 (extern) 두개이상의함수가블록에서자료를공유하고수정할수있는변수 사용법 유효범위 extern 변수타입변수명 ; 전역 ( 전체프로그램 ). 외부변수를 1개의단위프로그램에서만사용시외부에서선언되는 static변수와같은기능을가짐 ( extern int v1; = static int v1; ) 한프로그램내지역변수와전역변수가중복선언된경우에지역변수가우선권이높음 7

변수의영역 외부변수 (extern) 초기값을할당하지않은경우 정적변수와같은초기값이할당 함수의밖에서변수를정의하여외부변수로사용 이때, extern 과함께선언할필요는없으나, 예 ) [extern] int var1; 외부변수의선언문이다른파일에있는경우에는반드시예약어 extern 과함께선언 외부변수와외부정적변수의차이점 외부정적 (static external) 변수 : 같은파일내에존재하는함수들에의해서만사용 외부 (extern) 변수 : 어떤다른파일내에존재하는함수들에의해서도사용가능 8

선행처리기 선행처리기 (preprocessor) 원시코드를컴파일러가컴파일하기전에특정한변수를정의된문자열로치환하는기능 매크로정의 #define 매크로명문자열 ( 예, #define PI 3.1415926536) PI = 3.145926536 매크로확장 #define 매크로명 ( 인수 ) 인수가포함된수식또는함수 파일포함 #include 파일명, 또는 #include < 파일명 > 9

선행처리기 매크로정의 매크로는긴문장이나여러줄의문장을대신하는용어일반형식 정의방법 #define 매크로명치환문자열 매크로명은공백을불허용 매크로명작성시관례적으로대문자들로명명 #define과매크로명, 치환문자열사이 적어도하나이상의공백 (blank) 이나탭 (tab) 으로구분 ;( 세미콜론 ) 붙이지않음 #define줄에표준 C 주석문을붙일수있음 #define문이길어져하나이상의줄을차지할때에는백슬래시 (\, \) 를사용 10

선행처리기 매크로확장 선행처리기에서는인수를동반한문자열치환매크로가허용 인수를가진매크로는인수가괄호안에쓰여지므로함수로생각될수있음 일반형식 #define 매크로명 ( 인수 ) 인수가포함된수식또는함수 매크로정의와확장 #define AREA(x) (3.1415926536 * x * x) void main() { printf( %f\n, AREA(2.5)); /* AREA(2.5) (3.1415926536 * 2.5 * 2.5) */ } void main() { printf( %f\n, 3.1415926536 * 2.5 * 2.5); } 11

선행처리기 매크로확장 주의점 매크로명과괄호사이에공백이존재해서는안됨 #define AREA(x) (O) #define AREA (x) (X) 매크로정의에서치환문자열전체가괄호안에포함되어야함 이때괄호내의인수가수식으로이루어질때실행순서가바뀌지않도록우선순위를기술 #define SQUARE(x) (x*x) #define SQUARE(x) ((x)*(x)) SQUARE(a+b) a+b*a+b /* x a+b */ SQUARE(a+b) (a+b)*(a+b) 12

선행처리기 파일포함 특정한파일을프로그램에불러들여사용한다. 사용법 #include 파일명 #include < 파일명 > 파일을현재의디렉토리에서먼저찾아본후, 파일이없을시표준라이브러리검색 파일을표준라이브러리만을대상으로검색 #include 명령을사용하여분할된파일을원시코드에포함 여러프로그램의모든부분에서사용되는값을설정하는매크로정의파일도원시파일에포함가능 13

선행처리기 기타선행처리기명령어 typedef 사용자가기존의자료형으로새로운자료형을만들게해주는도구 typedef 자료형선언할문자열 ; 호환성이요구되는프로그램에서프로그램을매개변수화할수있으며, 코드를간결하게해주고, 문서화에도움을줌 프로그래머가 unsigned char 을 BYTE 로사용하고싶은경우 typedef unsigned char BYTE; BYTE var1, var2; /* unsigned char var1, var2 와같음 */ 14

Q & A 15