Visual C++6.0으로 배우는 C언어 제1부-함수(2/7)
본 자료는 6페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
해당 자료는 6페이지 까지만 미리보기를 제공합니다.
6페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

【 1】아스키코드(atoi, atof)

【 2】함수 선언

【 3】함수 프로토타입

【 4】문자열의 입력

【 5】문자열 처리함수

【 6】매개변수 전달방법

【 7】재귀함수(하노이탑)

【 8】함수의 내포

【 9】글로벌 변수

【10】전처리기와 매크로

본문내용

가아서 move함수가 종료되는 것을 알 수 있을 것입니다.( if 문이 종료되면 move 함수는 더 이상 수행할 문장이 없기 때문입니다. )
그러면 (1)의 if문이 종료되고 다음으로 Ⅰ의 move함수가 끝났습니다.
이제는 조금 더 크게 보아야 하겠습니다. (2)의 if 문에서 보아야 하기 때문입니다. (2)의 if문의 첫문장의 실행은 \\ ~ \\ 사이에서 끝났습니다. 따라서 이제는 (2)의 if 문의 두 번 째 문장을 실행해야 하겠습니다.
if 문의 두 번째 문장은
⑥printf("%d번에서 %d번으로 한 장의 디스크를 옮긴다.\n",a,b);
Ⅱ의 move 함수에서 변수 값을 살펴봅니다. a = 1, b = 2 이므로 출력은 아래와 같습니다.
1번에서 2번으로 한 장의 디스크를 옮긴다.
if 문의 두 번째 문장은 끝났습니다.
이제 if문의 세 번째 문장에서 다시 move 함수를 호출 합니다.
(2)의 if문의 변수명과 그 값을 먼저 보면,
n = 2 , a = 1, b = 2, c = 3 이고 여기에서 if문의 세 번째 문장을 보면 move(n-1,c,b,a);
이어서 넘겨주는 값은 순서대로 1, 3, 2, 1입니다. move 함수의 시작 위치인 ③으로 가보면.
③ move ( n, a, b, c)에서 호출한 함수의 변수명과 그 값은 n = 1, a = 3, b = 2, c = 1 이 됩니다.
다음 move함수 내부의 if문에서 n=1>0이므로 if문 내부를 수행합니다.
첫 번째 move 함수 호출에서 0( = n-1 )이 넘어가므로 호출한 move 함수는 아무런 수행없이 종료,
두 번째 줄에서 printf 문이 수행되고
a = 3, b= 2 이므로 출력되는 문장을..
3번에서 2번으로 한 장의 디스크를 옮긴다.
세 번째 문장에서 호출한 move함수도 첫번째 줄과 마찬가지로 n의 값에 0이 넘어가므로 수행없이 종료합니다.
이로써(2)의 if문의 첫 줄에서 호출한 move함수는 끝을 맺습니다.
(2)번의 if문 세 번째 줄의 수행이 끝났고 따라서 Ⅱ의 move의 수행도 끝을 맺습니다. \\
이제는 \\ - \\ 사이가 끝났음을 알 수 있습니다.
지금까지 한 것을 (3)의 if의 위치에서 보면 (3)의 if문의 첫 번째 줄이 끝났습니다.
이제는 (3)번의 if문 두 번째 문장을 수행할 차례입니다. Ⅲ의 move함수의 변수명과 그 값에 영향을 받기 때문에 a = 1 , b = 3, 이 되고
출력값으로 "1번에서 3번으로 한 장의 디스크를 옮긴다." 가 화면에 출력될 것입니다.
(3)의 if문의 나머지 세 번째 문장이 수행될 것입니다. 앞이 것과 마찬가지로 해보면 될 것입니다. 그러면 나머지 출력값이 차례대로
2번에서 1번으로 한 장의 디스크를 옮긴다.
2번에서 3번으로 한 장의 디스크를 옮긴다.
1번에서 3번으로 한 장의 디스크를 옮긴다.
이 됨을 알 수 있을 것입니다. 이것을 살펴볼 때 중요한 것은 변수명과 그것이 전달되는 값을 혼동하지 말아야 한다는 것입니다. 변수명이 같다고해서 다른 함수에서 같은 값을 가지는 것이 아니라는 것을 명심하고 하나하나 따져보면 됩니다.
【 8】함수의 내포
TOP
- 함수내에서 또다른 함수를 호출하는 것을 말한다.
#include
int add(int,int); //함수 프로토타잎의 선언.
void pause(void); //함수 프로토타잎의 선언.
add(a,b) int a,b;
{
int c;
printf("%d 더하기 %d \n", a, b);
pause(); //인수형을 이미 알고 있으므로 컴파일시에는
// 함수 pause()의 내용을 알 필요가 없다.
c=a+b;
return c;
}
void pause(void)
{
printf("계속하려면 아무키나 누르세요\n");
}
main(){
int x,y;
aa: y=5;
x=add(4,y);
printf("%d+%d=%d\n",4,y,x);
getch();
goto aa;
}
<결과> 4 더하기 5
계속하려면 아무키나 누르세요 (엔터)
4+5=9
【 9】
글로벌(Global) 변수
- 모든 함수에서 공통으로 사용하는 변수
- 함수의 바깥에서 형선언을 해야한다. (큰 프로그램에서는 함부로 쓸 수 없다.)
(예)
#include
void print_it(void);
int a; //........... 글로벌 변수의 선언
void print_it(void){
printf(" a is %d \n", a); //............글로벌 변수의 사용
}
main(){
a=10; //............글로벌 변수의 사용
print_it();
getch();
}
<결과> a is 10
【10】전처리기(preprocess)와 매크로(MACRO)
[1] 전처리기
- C 컴파일러에 의해 번역되기 전에 미리 처리하는 기능
- 프리프로세서를 사용하면 큰 프로그램에서 프로그램 간의 결성과 수정이 용이하다.
또, 모듈화(modularization)프로그래밍으로 구조화 프로그램의 특성을 반영할 수 있다.
- 종류 : #include (저장된 파일을 포함한다)
#define (매크로를 정의한다.)
#if
#undef
#line
[2] 매크로(MACRO)
- 매크로명은 변수와 구분하기 위해 일반적으로 대문자로 정의한다.
- 프로그램 작성시 반복되는 상수나 문장을 간결하게 한다.
- 실행속도가 서브함수보다 빠른 반면, 메모리의 낭비가 많다.
(예제1)
#include
#define ST "Hello!"
main(){
char *name="computer";clrscr();
printf("%s %s \n", ST, name);
getch();
}
<결과> Hello! computer
(예제2)
#define PNT(a,b) printf("a는 %d, b는 %d\n",a,b)
main(){
int a,b=4;
a=b++ +3; /*a는 b++가 수행되기전의 값인 4에다 3을 더한다, ++b이면 5에다 3을 더한다*/
PNT(a,b);
a=--b;
PNT(a,b);
getch();
}
<결과> a는 7, b는 5
a는 4, b는 4

키워드

  • 가격2,000
  • 페이지수19페이지
  • 등록일2004.05.27
  • 저작시기2004.05
  • 파일형식한글(hwp)
  • 자료번호#252920
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니