기능
큰 프로그램을 개발하고 유지하는 제일 방법은 각각은 처리하기 쉬운 더 작은 조각에서 그것을 건설하기 위한 것이다 (때때로 언급한 기술은 것과 같이 분할한다 그리고 정복한다). 기능은 프로그래머를 modularize 프로그램을 허용한다.
기능은 복잡한 프로그램이 읽고, 유지한다 각각은 쓰기 쉬운, 작은 구획으로 위로 소포로 하는 것을 허용한다. 우리는 이미 표준 도서관에서 기능 주요의와 사용한 printf를 만났다. 우리는 당연히 우리의 자신의 기능 및 헤더 파일을 만들어서 좋다. 기능에는 뒤에 오는 배치가 있다:
return-type function-name ( argument list if necessary )
{
local-declarations;
statements ;
return return-value;
}
돌려보내 유형이 생략되는 경우에, C는 int에 궐석한다. 돌려보내 가치는 선언한 유형의 이어야 한다. 모든 가변은 기능 안에 정의된 기능에서서만 알려진다 불린다 지역 변수에게, 에서 선언했다.
몇몇 기능에는 기능 사이 커뮤니케이션 방법을 제공하는 매개변수 리스트, 및 기능을 부른 단위가 있다. 매개변수는 또한 기능의 유효한 외부가 아니다 지역 변수, 에서이다. 프로그램은 이제까지는 모두를 비치하고 있다 기능인 요점을 포함했다.
기능은 어떤 가치도 돌려보내기 없이 뒤에 오는 배치가 있으면 어떤 경우에는, 간단하게 업무를 이행할지도 모른다:
void function-name ( argument list if necessary )
{
local-declarations ;
statements;
}
논쟁은 C 함수 호출에 있는 가치를 항상 통과된다. 이것은 논쟁의 가치의 로컬 복사가 일과에 통과된ㄴ다는 것을 의미한다. 수정된 논쟁의 로컬 복사에서만 기능에서 논쟁에 어떤 든지 내부에 만들어진다.
논쟁 명부에 있는 논쟁을 바꾸거나 정의하기 위하여, 이 논쟁은 주소로 통과되어야 한다. 당신은 기능이 그 논쟁의 가치를 바꾸지 않는 경우에 일정한 가변을 사용한다. 당신은 기능 전환 그 논쟁의 가치 포인터를 이용해야 하는 경우에.
저희가 보기로 배우게 하십시오:
#include <stdio.h>
void exchange ( int *a, int *b )
{
int temp;
temp = *a;
*a = *b;
*b = temp;
printf(" From function exchange: ");
printf("a = %d, b = %d\n", *a, *b);
}
void main()
{
int a, b;
a = 5;
b = 7;
printf("From main: a = %d, b = %d\n", a, b);
exchange(&a, &b);
printf("Back in main: ");
printf("a = %d, b = %d\n", a, b);
}
그리고 이 프로그램의 산출은 다음과 같이 표시될 것이다:
From main: a = 5, b = 7
From function exchange: a = 7, b = 5
Back in main: a = 7, b = 5 |
|