Microsoft PowerPoint - chap12-고급기능.pptx
|
|
- 효주 당
- 5 years ago
- Views:
Transcription
1 #include <stdio.h> int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 가 제공하는 매크로 상수와 매크로 함수 기능에 대하여 알아본다. 가 제공하는 조건부 컴파일 기능에 대하여 알아본다. 프로그램의 여러 개의 소스 파일로 나누어 작성하는 을 하기 위한 방법에 대하여 알아본다. main 함수의 매개변수에 대하여 알아본다. 2
2 목차 매크로 조건부 컴파일 #include 헤더 파일과 소스 파일 헤더 파일의 중복 문제 헤더 파일과 소스 파일의 구성 main 함수의 매개변수 main 함수의 원형 main 함수의 매개변수 3 (1/2) 컴파일러가 소스 파일을 컴파일하기 전에 먼저 수행되는 프로그램 프로그래머가 작성한 소스 파일이 컴파일될 수 있도록 준비한다. 문장은 # 으로 시작한다. 4
3 (2/2) 5 매크로 매크로 상수(1/2) 는 소스 파일에서 매크로 상수가 사용된 곳을 모두 찾아서 정의된 문자 열로 대치한다. 6
4 매크로 매크로 상수(2/2) 정수형 상수, 실수형 상수나 문자열 상수도 매크로 상수로 정의할 수 있으며, 함 수명이나 데이터형도 매크로 상수로 정의할 수 있다. 7 매크로 매크로 함수(1/3) 매크로 함수는 함수처럼 인자를 갖는 매크로이다. 매크로 상수처럼 매크로 함수가 사용되는 곳에 문자열 대치를 통해서 코드를 확 장한다. 8
5 매크로 매크로 함수(2/3) 는 프로그램에서 매크로 함수가 사 용된 곳을 만나면 ( ) 안에 있는 문자열을 매 크로 함수의 인자에 매핑해서, 문자열 대치 를 수행한다. 9 매크로 매크로 함수(3/3) 매크로 함수는 함수인 것처럼 보이지만 사실은 함수가 아니다. 컴파일시에 인자의 데이터형 검사를 수행하지 않으며, 인자를 매개변수로 전달하 는 함수 호출 과정이 수행되지 않는다. 매크로 함수 사용 시 문자열 대치 과정에서 잘못된 결과가 만들어질 수도 있다. 10
6 매크로 매크로 함수를 정의하고 사용하는 예(1/3) 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: /* Ex12_01.c */ #include <stdio.h> #define SQUARE(n) n*n 매크로 함수의 정의 int square(int n) return n*n; int main(void) int result = SQUARE(3); printf("3의 제곱 : %d\n", result); 매크로 함수의 호출 result = SQUARE(1+2); 매크로 함수의 호출 printf("square(1+2) = %d\n", result); 11 매크로 매크로 함수를 정의하고 사용하는 예(2/3) 19: 20: 21: 22: 23: 24: 25: 26: result = square(1+2); 일반 함수의 호출 printf("square(1+2) = %d\n", result); printf("square(2.5) = %f\n", SQUARE(2.5)); printf("square(2.5) = %d\n", square(2.5)); 매크로 함수의 호출 일반 함수의 호출 return 0; 12
7 매크로 매크로 함수 사용 시 주의사항(1/2) 일반 함수는 먼저 인자의 값을 계산한 다음에 함수가 호출된다. 매크로 함수는 문자열 대치로 처리되므로 인자의 값을 먼저 계산하지 않는다. 매크로 함수의 인자를 사용할 때 ( )로 묶어주어야 한다. 매크로 함수의 인자로 증감연산자를 이용한 연산식을 사용하지 않도록 주의해야 한다. 13 매크로 매크로 함수 사용 시 주의사항(2/2) 매크로 함수는 인자의 데이터형을 검사하지 않는다. 여러 줄로 된 매크로함수를 정의하려면 각 라인의 맨 끝에 \을 써주어야 한다. 14
8 매크로 매크로 함수의 장단점 장점 : 매크로 함수를 사용하면 프로그램의 실행 속도가 빨라진다. 매크로 함수를 사용할 때는 함수 호출이 일어나지 않으므로 함수 호출의 오버헤드를 줄일 수 있다. 단점 : 매크로 함수를 많이 사용하는 프로그램은 프로그램의 크기가 커진다. 일반 함수 코드는 한 번만 컴파일해서 만들어두고, 함수 코드를 필요할 때마다 반복해 서 호출한다. 매크로 함수는 사용되는 곳마다 매크로 함수를 확장한 코드가 복사된다. 매크로 함수를 사용하면, 코드가 알아보기 어려워진다. 매크로 함수를 이용하면 일반 함수로는 구현할 수 없는 기능도 처리할 수 있기 때 문에 라이브러리나 복잡한 프로그램에서 자주 사용된다. 15 매크로 연산자 # 문자열 만들기 연산자(stringizing operator) # 다음에 오는 매크로 함수의 인자를 로 묶어서 문자열 리터럴로 만든다. 16
9 매크로 연산자 ## 토큰 결합 연산자(token-pasting operator) 매크로 함수 안에서 토큰에 다른 토큰을 결합해서 새로운 토큰을 생성한다. 17 매크로 # 연산자와 ## 연산자 사용 예(1/2) 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: /* Ex12_02.c */ #include <stdio.h> #define PRINT1(x) printf("x = %d\n", x) #define PRINT2(x) printf(#x" = %d\n", x) #define MAKE_FUNC(name) void fn##name(void) \ \ printf("fn"#name" 호출\n"); \ 매크로 함수의 정의 #을 이용한 매크로 함수의 정의 #과 ##을 이용한 매크로 함수의 정의 MAKE_FUNC(test1, 1) MAKE_FUNC(test2, 2) int main(void) int num = 10; PRINT1(num); PRINT2(num); 18
10 매크로 # 연산자와 ## 연산자 사용 예(2/2) 20: 21: 22: 23: 24: 25: fntest1( ); fntest2( ); return 0; 19 조건부 컴파일 조건부 컴파일 특정 조건이 만족할 때만 코드를 컴파일한다. 상황에 따라서 특정 코드를 컴파일하게 또는 컴파일하지 않게 만들 수 있다. 이식성 있는 코드를 개발할 때 유용하다. 20
11 조건부 컴파일 #if, #else, #endif(1/3) #if의 조건식에는 매크로를 정수와 비교하는 관계 연산자가 주로 사용되고, 산술 연산자, 논리 연산자 등이 사용될 수 있다. 21 조건부 컴파일 #if, #else, #endif(2/3) #if의 조건식에서 매크로를 실수나 문자열과 비교할 수 없다. #if에는 반드시 짝이 되는 #endif가 필요하며, #else를 함께 사용할 수도 있다. 조건이 참이면 문장1을 컴파일하고, 조건1이 거짓이면 문장2를 컴파일한다. #else문에 다른 조건을 다시 검사하려면 #elif를 사용한다. 22
12 조건부 컴파일 #if, #else, #endif(3/3) #if, #endif 에서는 컴파일할 문장이 여러 개여도 로 묶어줄 필요가 없다. #if 안에 다른 #if를 중첩해서 사용할 수 있으며, 각각의 #if마다 #endif가 하나씩 짝을 이루어야 한다. 23 조건부 컴파일 #ifdef(1/3) if defined 라는 의미이다. #ifdef는 특정 매크로의 정의 여부에 따라 #ifdef와 #endif 사이의 문장을 컴파일 할지 결정한다. 24
13 조건부 컴파일 #ifdef(2/3) DEBUG 매크로 정의시 에만 함수 정보를 출력하는 경우 출력문에 수행되려면 DEBUG 매크로 정의가 필요하다 조건부 컴파일 #ifdef(3/3)
14 조건부 컴파일 #ifdef를 이용한 디버깅 정보 출력(1/2) 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: /* Ex12_03.c */ #include <stdio.h> #define DEBUG DEBUG 매크로 심볼의 정의 int GetFactorial(int n); int main(void) int result; result = GetFactorial(5); printf("result = %d\n", result); return 0; 27 조건부 컴파일 #ifdef를 이용한 디버깅 정보 출력(2/2) 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: int GetFactorial(int n) #ifdef DEBUG printf("getfactorial 함수 호출 : "); printf("n = %d\n", n); #endif 조건부 컴파일 if( n <= 1 ) return 1; return n * GetFactorial(n - 1); 28
15 조건부 컴파일 #ifndef if not defined 라는 의미이다. #ifnded 다음의 매크로가 정의되지 않은 경우에만 #ifndef와 #endif 사이의 문장 이 컴파일된다. #ifdef나 #ifdef에서 사용되는 매크로 심볼의 정의 #define을 이용하거나 C 컴파일러의 컴파일러 스위치를 이용해서 정의한다. 29 의 필요성 작성해야 할 코드의 양이 많거나 여러 사람이 공동 개발을 해야 하는 경우에는 소 스 파일을 여러 개로 나누어서 프로그램을 개발해야 한다. 관련된 함수나 변수들끼리 한 파일로 모아서 작성한다. 관련된 코드를 한 곳에 모아두면 유지 보수하기가 쉬워진다. 헤더 파일 서로 파일 소스 소스 다른 소스 파일 사이에서 필요한 정보를 공유할 수 있게 만들어 준다. 확장자로.h를 사용한다. 파일에 정의된 함수나 전역 변수를 사용하는 데 필요한 정보를 제공한다. 파일에 헤더 파일을 포함하려면 #include를 이용한다. 30
16 헤더 파일과 소스 파일 31 #include #include문 헤더 파일은 문장인 #include에 의해서 소스 파일 안에 포함된 후 컴파 일된다. 는 #include가 지정한 헤더 파일의 내용을 #include가 사용된 위치로 복 사해 넣어준다. 32
17 #include #include <라이브러리 헤더> 는 헤더 파일을 C 컴파일러의 포함 경로(include path)에서 찾는다. 포함 경로는 컴파일러가 제공하는 표준 라이브러리의 헤더 파일이 모여 있는 디 렉터리이다. #include 사용자 정의 헤더 는 헤더 파일을 소스 파일이 있는 디렉터리에서 찾는다. 33 #include 헤더 파일의 경로명 <>나 안에 헤더 파일의 완전 경로명이나 상대 경로명을 지정할 수도 있다. 34
18 다른 파일에 정의된 함수의 호출(1/7) C 컴파일러는 각각의 소스 파일마다 독립적으로 컴파일을 수행한다. 함수 호출 시 함수의 선언이나 정의가 없으면 컴파일 경고가 발생한다. 35 다른 파일에 정의된 함수의 호출(2/7) 다른 파일에 정의된 함수를 호출하려면 함수의 선언이 필요하다. 36
19 다른 파일에 정의된 함수의 호출(3/7) 소스 파일이 여러 개면 소스 파일마다 함수의 선언이 필요하다. 37 다른 파일에 정의된 함수의 호출(4/7) 헤더 파일을 이용하면 함수 선언을 한 곳에 모아둘 수 있다. 38
20 다른 파일에 정의된 함수의 호출(5/7) 소스 파일의 이름을 따서 헤더 파일을 만든다. Array.c에 정의된 함수들을 다른 소스 파일에서 호출할 수 있게 하려면 먼저 Array.c의 이름을 따서 Array.h를 만든다. 헤더 파일에 함수의 선언을 넣어준다. 함수를 호출하려면 소스 파일마다 헤더 파일을 포함한다. Array.c에 정의된 함수를 호출하려고 하는 소스 파일마다 #include를 이용해서 Array.h 을 포함한다. 특정 소스 파일에 대한 헤더 파일을 만들고 나면, 소스 파일에도 자기 자신의 헤 더 파일을 포함해주는 것이 좋다. Array.c에도 Array.h를 포함해준다. 소스 파일은 각각 독립적으로 컴파일되므로, 라이브러리 헤더는 라이브러리를 사 용하는 소스 파일마다 각각 포함해주어야 한다. 입출력 라이브러리를 사용하는 소스 파일마다 <stdio.h>를 포함해야 한다. 39 다른 파일에 정의된 함수의 호출(6/7) 40
21 다른 파일에 정의된 함수의 호출(7/7) ① 먼저 호출될 함수의 정의가 들어있는 소스 파일의 이름을 따서 헤더 파일을 생성 한다. ② 헤더 파일에는 다른 소스 파일에서 호출될 함수의 선언을 넣어준다. ③ 다른 소스 파일에서 해당 함수를 호출하려면 함수 선언이 들어있는 헤더 파일을 포함하고 사용한다. 41 다른 파일에 정의된 함수의 호출 예(1/5) Array.h 01: 02: 03: 04: /* Array.h */ void PrintArray(const int *arr, int size); int GetSumOfArray(int *arr, int size); void SortArray(int *arr, int size); 함수의 선언 Array.c 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: /* Array.c */ #include <stdio.h> #include "Array.h" 라이브러리 헤더 파일 포함 자기 자신의 헤더 파일 포함 void PrintArray(const int *arr, int size) int i; //arr[0] = 100; for(i = 0 ; i < size ; i++) printf("%d ", arr[i]); 42
22 다른 파일에 정의된 함수의 호출 예(2/5) Array.c(continued) 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: printf("\n"); int GetSumOfArray(int *arr, int size) int i; int total; for(i = 0, total = 0 ; i < size ; i++) total += arr[i]; return total; void SortArray(int *arr, int size) int i, j, index; int temp; 43 다른 파일에 정의된 함수의 호출 예(3/5) Array.c(continued) 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: for(i = 0; i < size-1 ; i++) index = i; for( j = i+1 ; j < size ; j++) if( arr[index] > arr[ j] ) index = j; temp = arr[i]; arr[i] = arr[index]; arr[index] = temp; 44
23 다른 파일에 정의된 함수의 호출 예(4/5) Main.c 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: /* Main.c */ #include <stdio.h> #include "Array.h" 라이브러리 헤더 파일 포함 사용자 정의 헤더 파일 포함 int main(void) int x[5] = 43, 6, 24, 88, 34; int y[10] = 12, 35, 7, 45, 78, 22, 98, 77, 1, 28; printf("x 배열 : "); PrintArray(x, 5); printf("합계 : %d\n\n", GetSumOfArray(x, 5)); printf("y 배열 : "); PrintArray(y, 10); SortArray(y, 10); 45 다른 파일에 정의된 함수의 호출 예(5/5) Main.c(continued) 17: 18: 19: 20: 21: printf("정렬후 : "); PrintArray(y, 10); return 0; 46
24 매크로, 구조체, typedef의 공유 매크로나 구조체, typedef는 소스 파일마다 정의가 필요하므로 매크로, 구조체, typedef의 정의를 헤더 파일에 넣어준다. 47 여러 소스 파일에서 공유되는 매크로나 구조체, typedef의 정의 ① 매크로, 구조체, typedef의 정의는 소스 파일마다 필요하므로 헤더 파일에 넣어 준다. ② 헤더 파일에 구조체나 typedef를 사용하는 함수 선언이 들어갈 때는, 구조체나 typedef 정의 다음에 함수 선언을 넣어준다. ③ 매크로, 구조체, typedef를 사용하는 소스 파일마다 헤더 파일을 포함한다. 48
25 여러 소스 파일에 사용되는 구조체의 정의 예(1/5) Pont.h 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: /* Point.h */ struct point int x; int y; ; typedef struct point POINT; 구조체의 정의 구조체에 대한 typedef 정의 void PrintPoint(const POINT *p); void MovePoint(POINT *p, int dx, int dy); double GetDistance(const POINT *p1, const POINT *p2); 구조체를 매개변수로 갖는 함수의 선언 49 여러 소스 파일에 사용되는 구조체의 정의 예(2/5) Pont.c 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: /* Point.c */ #include <stdio.h> #include <math.h> #include "Point.h" 라이브러리 헤더 파일 포함 사용자 정의 헤더 파일 포함 void PrintPoint(const POINT *p) printf("(%d, %d)\n", p->x, p->y); void MovePoint(POINT *p, int dx, int dy) p->x += dx; p->y += dy; 50
26 여러 소스 파일에 사용되는 구조체의 정의 예(3/5) Pont.c(continued) 16: double GetDistance(const POINT *p1, const POINT *p2) 17: 18: int dx = p2->x - p1->x; 19: int dy = p2->y - p1->y; 20: return sqrt(dx*dx+dy*dy); 21: Main.c 01: 02: 03: 04: 05: 06: 07: 08: 09: /* Main.c */ #include <stdio.h> #include "Point.h" 라이브러리 헤더 파일 포함 사용자 정의 헤더 파일 포함 int main(void) POINT p1 = 0, 0; POINT p2 = 300, 400; 51 여러 소스 파일에 사용되는 구조체의 정의 예(3/5) Main.c(continued) 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: printf("p1 = "); PrintPoint(&p1); printf("p2 = "); PrintPoint(&p2); printf("두 점 사이의 거리 : %f\n", GetDistance(&p1, &p2)); MovePoint(&p2, 10, 10); printf("movepoint 호출 후 p2 = "); PrintPoint(&p2); return 0; 52
27 헤더 파일의 순서 헤더 파일 안에 구조체의 정의와 함수 선언을 함께 넣어줄 때는 순서에 주의해야 한다. point 구조체와 typedef를 함수 선언보다 앞쪽에 정의할 때는 올바르게 컴파일이 되지 만, 함수 선언보다 뒤쪽에 정의하면 컴파일 에러가 발생한다. 53 다른 소스 파일에 선언된 전역 변수의 사용(1/2) 다른 소스 파일에 선언된 전역 변수를 사용하려면 전역 변수의 extern 선언을 헤 더 파일에 넣어준다. 54
28 다른 소스 파일에 선언된 전역 변수의 사용(2/2) ① 전역 변수는 프로그램 전체에서 반드시 하나의 소스 파일에 선언한다. 즉, 하나의 소스 파일에서만 메모리가 할당되어야 한다. ② 전역 변수가 선언된 소스 파일의 헤더 파일에 전역 변수에 대한 extern 선언을 넣어준다. 전역 변수의 extern 선언은 메모리를 할당하지 않고, 전역 변수의 데이 터형과 변수명만 알려준다. ③ 전역 변수를 사용하려면 전역 변수의 extern 선언이 들어있는 헤더 파일을 포함 한다. 55 다른 소스 파일에 정의된 전역 변수의 사용 예(1/5) Pont.h 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: /* Point.h */ struct point int x; int y; ; typedef struct point POINT; void PrintPoint(const POINT *p); void MovePoint(POINT *p, int dx, int dy); double GetDistance(const POINT *p1, const POINT *p2); void SetOrigin(int x, int y); extern POINT g_origin; 전역 변수의 extern 선언 56
29 다른 소스 파일에 정의된 전역 변수의 사용 예(2/5) Pont.c 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: /* Point.c */ #include <stdio.h> #include <math.h> #include "Point.h" POINT g_origin; 전역 변수 선언 void PrintPoint(const POINT *p) printf("(%d, %d)\n", p->x, p->y); void MovePoint(POINT *p, int dx, int dy) p->x += dx; p->y += dy; 57 다른 소스 파일에 정의된 전역 변수의 사용 예(3/5) Pont.c(continued) 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: double GetDistance(const POINT *p1, const POINT *p2) int dx = p2->x - p1->x; int dy = p2->y - p1->y; return sqrt(dx*dx+dy*dy); void SetOrigin(int x, int y) g_origin.x = x; g_origin.y = y; 전역 변수의 사용 58
30 다른 소스 파일에 정의된 전역 변수의 사용 예(4/5) Main.c 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: /* Main.c */ #include <stdio.h> #include "Point.h" 사용자 정의 헤더 파일 포함 int main(void) POINT p1 = 100, 200; POINT p2 = 300, 400; printf("p1 = "); PrintPoint(&p1); printf("p2 = "); PrintPoint(&p2); printf("두 점 사이의 거리 : %f\n", GetDistance(&p1, &p2)); 59 다른 소스 파일에 정의된 전역 변수의 사용 예(5/5) Main.c(continued) 17: 18: 19: 20: 21: printf("원점과 p2 사이의 거리 : %f\n", GetDistance(&g_origin, &p2)); return 0; 60
31 헤더 파일의 중복 문제 소스 파일에 같은 헤더 파일이 여러 번 포함되서는 안된다. 61 헤더 파일의 중복 문제 헤더 파일의 중복 피하기(1/2) 헤더 파일의 시작과 끝에 #ifndef, #define, #endif를 넣어준다. #ifndef나 #define에 헤더 파일의 포함 여부를 알려주는 매크로 심볼을 지정한다. 62
32 헤더 파일의 중복 문제 헤더 파일의 중복 피하기(2/2) 보통 #ifndef와 #define 다음에 사용되는 매크로 심볼은 헤더 파일의 이름을 따서 만든다. 이 매크로 심볼의 정의 여부로 헤더 파일이 포함되었는지를 확인한다. 가능한 모든 헤더 파일에 #ifndef, #define, #endif를 넣어주는 것이 안전하다. 표준 C 라이브러리 헤더에도 이미 이 기능이 사용되고 있다. 63 헤더 파일의 중복 문제 헤더 파일의 중복 포함 막기(1/5) Pont.h 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: /* Point.h */ #ifndef POINT_H #define POINT_H 헤더 파일의 중복 포함 막기 struct point int x; int y; ; typedef struct point POINT; void PrintPoint(const POINT *p); void MovePoint(POINT *p, int dx, int dy); double GetDistance(const POINT *p1, const POINT *p2); void SetOrigin(int x, int y); extern POINT g_origin; #endif 헤더 파일의 중복 포함 막기 64
33 헤더 파일의 중복 문제 헤더 파일의 중복 포함 막기(2/5) Pont.c 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: /* Point.c */ #include <stdio.h> #include <math.h> #include "Point.h" POINT g_origin; void PrintPoint(const POINT *p) printf("(%d, %d)\n", p->x, p->y); void MovePoint(POINT *p, int dx, int dy) p->x += dx; p->y += dy; 65 헤더 파일의 중복 문제 헤더 파일의 중복 포함 막기(3/5) Pont.c(continued) 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: double GetDistance(const POINT *p1, const POINT *p2) int dx = p2->x - p1->x; int dy = p2->y - p1->y; return sqrt(dx*dx+dy*dy); void SetOrigin(int x, int y) g_origin.x = x; g_origin.y = y; 66
34 의 구성 헤더 파일과 소스 파일의 구성 67 main 함수의 매개변수 main 함수의 원형 main 함수의 원형 명령행 인자(command-line parameter) main 함수로 전달되는 인자 명령행 인자는 프로그램을 실행할 때 지정한다. 68
35 main 함수의 매개변수 main 함수의 매개변수 명령행 인자를 처리하기 위한 main 함수의 원형 argc : 명령행 인자의 개수 myprog.exe test.dat 에서 실행 파일명도 명령행 인자 로 간주된다. argv : 명령행 인자로 전달된 문자열의 배열 69 main 함수의 매개변수 main 함수의 매개변수 명령행 인자의 사용 예 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: /* Ex12_08.c */ #include <stdio.h> int main(int argc, char* argv[ ]) int i; 매개변수를 갖는 main 함수 for( i = 0 ; i < argc ; i++ ) printf("argv[%d] = %s\n", i, argv[i]); 명령행 인자 출력 return 0; 실행시 명령 프롬프트에서 Ex12_08.exe aaa bbb ccc 라고 지정한다. 70
36 main 함수의 매개변수 main 함수의 매개변수 명령행 인자를 이용한 계산기 프로그램(1/2) 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: /* Ex12_09.c */ #include <stdio.h> #include <stdlib.h> 매개변수를 갖는 main 함수 int main(int argc, char* argv[ ]) int lhs, rhs; char op; if( argc < 4 ) printf("usage : Calc value1 op value2\n"); return -1; lhs = atoi(argv[1]); op = argv[2][0]; rhs = atoi(argv[3]); 명령행 인자의 개수 확인 명령행 인자 사용 71 main 함수의 매개변수 main 함수의 매개변수 명령행 인자를 이용한 계산기 프로그램(2/2) 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: switch( op ) case '+': printf("%d + %d = %d\n", lhs, rhs, lhs+rhs); break; case '-': printf("%d - %d = %d\n", lhs, rhs, lhs-rhs); break; case '*': printf("%d * %d = %d\n", lhs, rhs, lhs*rhs); break; case '/': printf("%d / %d = %d\n", lhs, rhs, lhs/rhs); break; default : printf("잘못 입력하셨습니다.\n"); break; 실행시 명령 프롬프트에서 Calc.exe 이라고 지정한다. return 0; 72
37 의 구성 헤더 파일의 중복 포함 막기(5/5) Main.c(continued) 17: 18: 19: 20: 21: 22: printf("원점과 p2 사이의 거리 : %f\n", GetDistance(&g_origin, &p2)); return 0; 73 의 구성 헤더 파일의 중복 포함 막기(5/5) Main.c(continued) 17: 18: 19: 20: 21: 22: printf("원점과 p2 사이의 거리 : %f\n", GetDistance(&g_origin, &p2)); return 0; 74
38 학습정리 매크로 함수 : 함수처럼 인자를 갖는 매크로이다. 함수에 비해서 처리 속도는 빠 르지만프로그램 크기가 커지는 단점이 있다. #define SQUARE(n) ((n) * (n)) 연산자 : 매크로 함수의 인자를 문자열로 만드는 # 연산자와 토큰을 결 합하는 ## 연산자가 있다. #define PRINT(x) printf(#x" = %d\n", x); #define MAKE_FUNC(name) void fn##name(void) printf("fn"#name" 호출\n"); 조건부 컴파일 : 조건이 만족할 때 특정 문장을 컴파일한다. #if, #ifdef, #ifndef 등 이 있고, 각각은 #endif가 필요하다. #ifdef DEBUG printf("getfactorial 호출\n"); #endif 75 학습정리 #include : 다른 파일의 내용을 소스 파일에 복사해서 넣어준다. #include <라이브러리 헤더> #include "사용자 정의 헤더" 헤더 파일과 소스 파일 main 함수의 매개변수 main 함수의 원형 int main(int argc, char *argv[]); main 함수의 매개변수 : argc는 명령행 인자의 개수이고, argv는 명령행 인자 문 자열의 배열이다. 76
39 12 장. 고급기능 수고하셨습니다. 질문있습니까? NEXT Chapter 13 장. 입출력라이브러리 77
Microsoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationMicrosoft PowerPoint - chap05-제어문.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.
More informationMicrosoft PowerPoint - chap04-연산자.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에
More informationMicrosoft PowerPoint - chap13-입출력라이브러리.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,
More informationMicrosoft PowerPoint - chap11-포인터의활용.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More informationMicrosoft PowerPoint - chap03-변수와데이터형.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More informationuntitled
if( ) ; if( sales > 2000 ) bonus = 200; if( score >= 60 ) printf(".\n"); if( height >= 130 && age >= 10 ) printf(".\n"); if ( temperature < 0 ) printf(".\n"); // printf(" %.\n \n", temperature); // if(
More informationK&R2 Reference Manual 번역본
typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct
More informationPowerPoint Presentation
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.
More information윤성우의 열혈 TCP/IP 소켓 프로그래밍
C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct
More information< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>
Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법
More informationuntitled
int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015
More informationuntitled
while do-while for break continue while( ) ; #include 0 i int main(void) int meter; int i = 0; while(i < 3) meter = i * 1609; printf("%d %d \n", i, meter); i++; return 0; i i< 3 () 0 (1)
More informationMicrosoft PowerPoint - [2009] 02.pptx
원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include
More information제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터
More informationMicrosoft PowerPoint - ch 전처리기, 다중 소스파일 pm1015
2015-1 11-1. 전처리기, 다중소스파일 2015 년 5 월 11 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 전처리기 (preprocessor) 다중소스파일 헤더파일 함수소스파일
More informationC 언어 프로그래밊 과제 풀이
과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍
More informationPowerPoint 프레젠테이션
Chapter 15 고급프로그램을 만들기위한 C... 1. main( ) 함수의숨겨진이야기 2. 헤더파일 3. 전처리문과예약어 1. main( ) 함수의숨겨진이야기 main( ) 함수의매개변수 [ 기본 14-1] main( ) 함수에매개변수를사용한예 1 01 #include 02 03 int main(int argc, char* argv[])
More information0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4
Introduction to software design 2012-1 Final 2012.06.13 16:00-18:00 Student ID: Name: - 1 - 0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationPowerPoint Presentation
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 변수와상수의개념에대해알아본다.
More informationPowerPoint 프레젠테이션
Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More information학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More information중간고사
중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX
More information프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음
프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y
More information03장.스택.key
---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1 ? (stack): (LIFO:Last-In First-Out) 2 : top : ( index -1 ),,, 3 : ( ) ( ) -> ->. ->.... 4 Stack ADT : (LIFO) : init():. is_empty():
More information02장.배열과 클래스
---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 3 장 : 변수와데이터형 2012 년 이은주 학습목표 변수와상수의개념에대해알아본다. 리터럴상수, 매크로상수, const 변수에대해알아본 다. C 언어의데이터형에대해알아본다. 2 목차 변수와상수 변수 상수 데이터형 문자형 정수형 실수형 sizeof 연산자 3 변수와상수 변수 : 값이변경될수있는데이터 상수 : 값이변경될수없는데이터
More information<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>
제14장 동적 메모리 할당 Dynamic Allocation void * malloc(sizeof(char)*256) void * calloc(sizeof(char), 256) void * realloc(void *, size_t); Self-Referece NODE struct selfref { int n; struct selfref *next; }; Linked
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드
More informationMicrosoft PowerPoint - 08-C-App-19-Quick-Preprocessor
19. 전처리와분할컴파일 순천향대학교컴퓨터학부이상정 1 학습내용 전처리명령어 #include #define 기호상수 const 분할컴파일 순천향대학교컴퓨터학부이상정 2 전처리과정 전처리 (preprocessor) 전처리명령어는 # 기호로시작 #incldue #define 순천향대학교컴퓨터학부이상정 3 #include (1) 지정된파일을프로그램에삽입 꺽쇠괄호는포함할파일을컴파일러에설정되어있는특정디렉토리에서검색
More information1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 #define _CRT_SECURE_NO_WARNINGS #include #include main() { char ch; printf(" 문자 1개를입력하시오 : "); scanf("%c", &ch); if (isalpha(ch))
More informationint main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \
? 1 int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \n", &a); printf(" b : %x \n", &b); * : 12ff60,
More information본 강의에 들어가기 전
C 기초특강 종합과제 과제내용 구조체를이용하여교과목이름과코드를파일로부터입력받아관리 구조체를이용하여학생들의이름, 학번과이수한교과목의코드와점수를파일로부터입력 학생개인별총점, 평균계산 교과목별이수학생수, 총점및평균을계산 결과를파일에저장하는프로그램을작성 2 Makefile OBJS = score_main.o score_input.o score_calc.o score_print.o
More information11장 포인터
누구나즐기는 C 언어콘서트 제 13 장전처리및기타기능 이번장에서학습할내용 전처리지시어 분할컴파일 명령어라인의매개변수 디버깅방법 전처리와기타중요한테마에대하여학습한다. 전처리기란? 전처리기 (preprocessor) 는컴파일하기에앞서서소스파일을처리하는컴파일러의한부분 전처리기의요약 지시어 #define #include #undef #if #else #endif #ifdef
More information목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2
제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해
More information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More information비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2
비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,
More informationPowerPoint 프레젠테이션
Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.
More information<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>
쉽게풀어쓴 C 언어 Express 제 14 장포인터활용 이중포인터 이중포인터 (double pointer) : 포인터를가리키는포인터 int i = 10; int *p = &i; int **q = &p; // i 는 int 형변수 // p 는 i 를가리키는포인터 // q 는포인터 p 를가리키는이중포인터 이중포인터 이중포인터의해석 이중포인터 // 이중포인터프로그램
More informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More informationuntitled
자료형 기본자료형 : char, int, float, double 등 파생자료형 : 배열, 열거형, 구조체, 공용체 vs struct 구조체 _ 태그 _ 이름 자료형멤버 _ 이름 ; 자료형멤버 _ 이름 ;... ; struct student int number; // char name[10]; // double height; // ; // x값과 y값으로이루어지는화면의좌표
More informationPowerPoint 프레젠테이션
Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2
More informationch15
쉽게풀어쓴 C 언어 Express 제 14 장포인터활용 C Express 이중포인터 이중포인터 (double pointer) : 포인터를가리키는포인터 int i = 10; int *p = &i; int **q = &p; // i 는 int 형변수 // p 는 i 를가리키는포인터 // q 는포인터 p 를가리키는이중포인터 이중포인터 이중포인터의해석 이중포인터 //
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
함수의인수 (argument) 전달방법 C 에서함수의인수전달방법 값에의한호출 (call-by-value): 기본적인방법 포인터에의한호출 (call-by-pointer): 포인터이용 참조에의한호출 (call-by-reference): 참조 (reference) 이용 7-35 값에의한호출 (call-by-value) 함수호출시에변수의값을함수에복사본으로전달 복사본이전달되며,
More informationMicrosoft PowerPoint - 제11장 포인터(강의)
쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조
More informationMicrosoft PowerPoint - 제11장 포인터
쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조
More informationC++-¿Ïº®Çؼ³10Àå
C C++. (preprocessor directives), C C++ C/C++... C++, C. C++ C. C C++. C,, C++, C++., C++.,.. #define #elif #else #error #if #itdef #ifndef #include #line #pragma #undef #.,.,. #include #include
More information제 15 장전처리및비트연산 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 15 장전처리및비트연산 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 전처리기란무엇인가? 단수매크로 함수매크로 내장매크로 다중소스파일 비트단위연산자 전처리기를사용하면복잡한컴파일을쉽게할수있습니다.
More information1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문
1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문 1. 표준입출력 표준입출력 입력 : 키보드, scanf 함수 출력 : 모니터, printf 함수문제 : 정수값 2개를입력받고두값사이의값들을더하여출력하라. #include int main(void) int Num1, Num2; int
More informationchap10.PDF
10 C++ Hello!! C C C++ C++ C++ 2 C++ 1980 Bell Bjarne Stroustrup C++ C C++ C, C++ C C 3 C C++ (prototype) (type checking) C C++ : C++ 4 C C++ (prototype) (type checking) [ 10-1] #include extern
More informationMicrosoft PowerPoint - additional01.ppt [호환 모드]
1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능
More informationPowerPoint 프레젠테이션
KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된
More informationChapter_06
프로그래밍 1 1 Chapter 6. Functions and Program Structure April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 이장의강의목표 2 문자의입력방법을이해한다. 중첩된 if문을이해한다. while 반복문의사용법을익힌다. do 반복문의사용법을익힌다.
More information컴파일러
YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",
More informationC 프로그래밊 개요
구조체 2009 년 5 월 19 일 김경중 강의계획수정 일자계획 Quiz 실습보강 5 월 19 일 ( 화 ) 구조체 Quiz ( 함수 ) 5 월 21 일 ( 목 ) 구조체저녁 6 시 5 월 26 일 ( 화 ) 포인터 5 월 28 일 ( 목 ) 특강 (12:00-1:30) 6 월 2 일 ( 화 ) 포인터 Quiz ( 구조체 ) 저녁 6 시 6 월 4 일 ( 목
More informationMicrosoft PowerPoint - chap08-1 [호환 모드]
2011-1 학기프로그래밍입문 (1) 참고자료 : chapter 8-1. 전처리 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 전처리명령어 컴파일과정에는전처리 (preprocessing) 단계가있다. - 컴파일러는목적파일을만들기전에전처리라고하는특별한작업을
More informationMicrosoft PowerPoint - Chapter8.pptx
Computer Engineering g Programming g 2 제 8 장함수 Lecturer: JUNBEOM YOO jbyoo@konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 모듈화 함수의개념, 역할 함수작성방법 반환값 인수전달 규모가큰프로그램은전체문제를보다단순하고이해하기쉬운함수로나누어서프로그램을작성하여야합니다.
More information<4D F736F F F696E74202D20C1A63135C0E520C0FCC3B3B8AEB9D7BAF1C6AEBFACBBEA>
쉽게풀어쓴 C 언어 Express 제 15 장전처리및비트연산 이번장에서학습할내용 전처리지시어 분할컴파일 명령어라인의매개변수 디버깅방법 전처리와기타중요한테마에대하여학습한다. 전처리기란? 전처리기 (preprocessor) 는컴파일하기에앞서서소스파일을처리하는컴파일러의한부분 #include, #define 만처리합니다. 수고했어, 나머지는나한테맡겨! 소스파일 임시파일
More information쉽게 풀어쓴 C 프로그래밍
쉽게풀어쓴 C 언어 Express 제 6 장조건문 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break 문 continue 문 goto 문 5 장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장
More information쉽게 풀어쓴 C 프로그래밍
쉽게풀어쓴 C 언어 Express 제 6 장조건문 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break 문 continue 문 goto 문 5 장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장
More information8장. 포인터
2019-1 st 프로그래밍입문 (1) 8 장포인터 박종혁교수 서울과학기술대학교컴퓨터공학과 UCS Lab Tel: 970-6702 Email: jhpark1@seoultechackr 목차 포인터의기본 포인터의개념 포인터의선언및초기화 포인터의사용 포인터의용도 포인터사용시주의사항 참조에의한호출 배열과포인터의관계 calloc() 과 malloc() 을이용한동적메모리할당
More informationMicrosoft PowerPoint - Chapter_08.pptx
프로그래밍 1 1 Chapter 8. Pointers May, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 포인터의개념 (1/6) 2 포인터란 : 다른객체를가리키는변수 객체의메모리주소를저장하는변수 기호적방식 (symbolic way) 으로주소사용 포인터와관련된연산자
More information쉽게 풀어쓴 C 프로그래밍
제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using
More informationC 프로그래밊 개요
함수 (2) 2009 년 9 월 24 일 김경중 공지사항 10 월 1 일목요일수업휴강 숙제 #1 마감 : 10 월 6 일화요일 기초 함수를만들어라! 입력 함수 ( 기능수행 ) 반환 사용자정의함수 정의 : 사용자가자신의목적에따라직접작성한함수 함수의원형 (Function Prototype) + 함수의본체 (Function Body) : 함수의원형은함수에대한기본적정보만을포함
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationMicrosoft PowerPoint - Chapter_09.pptx
프로그래밍 1 1 Chapter 9. Structures May, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 구조체의개념 (1/4) 2 (0,0) 구조체 : 다양한종류의데이터로구성된사용자정의데이터타입 복잡한자료를다루는것을편하게해줌 예 #1: 정수로이루어진 x,
More informationMicrosoft PowerPoint - C++ 5 .pptx
C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성
More informationC++ Programming
C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator
More information슬라이드 1
2 장. 어휘원소, 연산자와 C 시스템 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2018-1 st 프로그래밍입문 (1) 2 목차 2.1 문자와어휘원소 2.2 구문법칙 2.3 주석 2.4 키워드 (Keyword) 2.5 식별자 (Identifier) 2.6 상수 (Integer,
More informationC 프로그램의 기본
C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석
More informationMicrosoft PowerPoint - chap-11.pptx
쉽게풀어쓴 C 언어 Express 제 11 장포인터 컴퓨터프로그래밍기초 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 컴퓨터프로그래밍기초 2 포인터란? 포인터 (pointer): 주소를가지고있는변수 컴퓨터프로그래밍기초 3 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다.
More information제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 11 장포인터 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습합니다.
More informationKNK_C_05_Pointers_Arrays_structures_summary_v02
Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",
More informationchap7.key
1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )
More information3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터
- Part2-3 3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터 3.1 포인터란 ü ü ü. ü. ü. ü ( ) ? 3.1 ü. ü C ( ).? ü ü PART2-4 ü ( ) PART3-4 3.2 포인터변수의선언과사용 3.2 포인터 변수의 선언과 사용 (1/8) 포인터 변수의
More information4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열
- Part2-4 4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열 4.1 포인터와 1 차원배열 4.1 1 (1/16)- - - [4-1.c ] #include int main(void) { int array[3]={10, 20, 30}; } prind("%x %x %x
More information구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을
(structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined
More informationA Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning
C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More informationMicrosoft PowerPoint - 08_(C_Programming)_(Korean)_Preprocessing
C Programming 전처리 (Preprocessing) Seo, Doo-Ok Clickseo.com clickseo@gmail.com 목 차 C 전처리기 조건및분할컴파일 2 C 전처리기 C 전처리기 매크로상수 매크로함수 조건및분할컴파일 3 전처리 (Preprocessing) C 전처리기 (1/3) 원시소스파일을컴파일하기전에행해야할일련의작업 외부파일포함기능
More information歯9장.PDF
9 Hello!! C printf() scanf() getchar() putchar() gets() puts() fopen() fclose() fprintf() fscant() fgetc() fputs() fgets() gputs() fread() fwrite() fseek() ftell() I/O 2 (stream) C (text stream) : `/n'
More information슬라이드 1
3 장. 선행자료 어휘원소, 연산자와 C 시스템 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2019-1 st 프로그래밍입문 (1) 2 목차 1.1 문자와어휘원소 1.2 구문법칙 1.3 주석 1.4 키워드 (Keyword) 1.5 식별자 (Identifier) 1.6 상수 (Integer,
More informationMicrosoft PowerPoint - Chapter 1-rev
1.C 기반의 C++ part 1 스트림입출력 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 스트림입출력 Jong Hyuk Park printf 와 scanf 출력의기본형태 : 과거스타일! iostream.h 헤더파일의포함
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More information쉽게 풀어쓴 C 프로그래밍
누구나즐기는 C 언어콘서트 제 5 장조건문 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 goto 문 이제까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장 조건에따라서여러개의같은처리를반복
More informationuntitled
1 hamks@dongguk.ac.kr (goal) (abstraction), (modularity), (interface) (efficient) (robust) C Unix C Unix (operating system) (network) (compiler) (machine architecture) 1 2 3 4 5 6 7 8 9 10 ANSI C Systems
More information: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print
1 : 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : 3 6 12 18 24 for(i=1; i
More informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More informationMicrosoft PowerPoint - chap-06.pptx
쉽게풀어쓴 C 언어 Express 제 6 장조건문 컴퓨터프로그래밍기초 이번장에서학습할내용 조건문이란? if 문 if, 문 중첩 if 문 switch 문 break문 continue문 goto 문 5장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 컴퓨터프로그래밍기초 2 조건문 조건에따라서여러개의실행경로가운데하나를선택
More informationMicrosoft PowerPoint - ch08 - 구조체 (structure) am0845
2015-1 프로그래밍언어 8. 구조체 (Structure) 2015 년 4 월 11 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 구조체란무엇인가? 구조체의선언, 초기화, 사용
More information