함수는 하나의 특정 작업을 수행하도록 독립적으로 설계된 프로그램 코드의 한 단위이다.
함수도 데이터 형을 가지며 함수를 사용하기전에 함수의 데이터형을 미리 선언해야한다.
void형은 함수가 값을 리턴하지 않는다는 것이다.
일반적으로 프로토 타입은 함수반환값의 형과 예상되는 전달인자의 형을 모두 명시한다.
프로토타입은 전달인자의 개수와 데이터형을 표시하기 위해 콤마로 분리된 데이터형 리스트를 사용한다.
프로토타입에 변수이름을 사용한다고 해서 실제로 변수가 생성되는 것은 아니다.
실전달인자는 형식 매개변수로 알려지는 변수에 대입되는 특정한 값이다.
피호출 함수(called function)는 호출함수(calling function)로 부터 복사된 데이터를 가지고 작업하기 때문에, 피호출 함수가 사본데이터에 어떠한 조작을 가하더라도, 호출 함수에 있는 원래의 데이터는 보호된다.
호출함수는 전달인자를 스택(stack)이라는 임시 저장 공간에 놓는다. 피호출 함수는 그 스택으로부터 전달인자를 읽는다.
float형은 전달인자로 전달될때 double형으로 올림 변환이 일어난다.
데이터형이 프로토타입과 일치하지 않는다면, 컴파일러는 캐스트 연산을 적용하여 실전달인자들의 값을 형식 매개변수와 일치하는 데이터형으로 변환한다.
에러는 컴파일을 중단하지만 경고는 컴파일을 허용한다는 것이다.
printf()의 부분적인 프로토타입
int printf(const char *,...);
이 프로토타입은, 첫번째 전달인자가 문자열이라는 것과, 지정되지 않은 전달인자가 더 있을 수 도 있다는 것을 말해준다.
C라이브러리는, stdarg.h 헤더파일을 통해 매개변수의 개수가 가변적인 함수를 정의하는 표준 방법을 제공한다. C는 함수가 자기자신을 호출하는 것을 허용한다. 이과정을 재귀(recursion)라고 부른다. 재귀를 끝내는 조건검사를 프로그램에 포함시키지 않는다면, 자기자신을 호출하는 함수는 무한정 그렇게 하려는 경향이 있기 때문에 재귀를 끝내는 부분이 까다롭다.
'Programming > C' 카테고리의 다른 글
C언어 공부 13 (0) | 2019.05.11 |
---|---|
프로그래밍 연습 5 (0) | 2019.05.09 |
C언어 공부 11 (0) | 2019.05.08 |
C언어 공부 10 (0) | 2019.05.08 |
C언어 공부 9 (0) | 2019.05.08 |