반응형
1. 잘못된 위치에 놓여있는 함수의 정의
- C프로그램은 위에서 아래로 컴파일이 진행된다.
- 컴파일러가 컴파일 하지 않은 함수의 호출문에서는 에러가 발생한다.
위처럼 Increment함수를 호출할때, 메인함수를 먼저 컴파일하고 Increment함수를 컴파일했기 때문
에 에러가 발생한다. 즉 함수는 호출되기 이전에 정의 되어야 한다. 하지만 함수의 선언을 통해 이렇
게 위치를 바꾸지 않고도 에러가 발생하지 않을 수 있다.
2. 함수의 선언을 통해서 원하는 위치에 함수 정의하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | int main(void) { int num = 2; int Increment(int n);/* Increment 함수의 선언 */ num = Increment(num); printf("num: %d \n", num); num = Increment(num); printf("num: %d \n", num); num = Increment(num); printf("num: %d \n", num); return 0; } int Increment(int n) { n++; return n; } | cs |
위 처럼 함수의 선언은 다음 3가지를 알려야 한다.
1) 함수의 이름
2) 함수의 매개변수 형태
3) 함수의 반환형 정보
이렇게 미리 함수의 선언을 통해 함수의 정의 위치를 바꾸지 않고도 에러가 발생하지 않을 수 있다.
3. 함수의 선언은 가급적 함수안이 아니라 함수 밖 위쪽에 두면 좋다.
2번의 예제처럼 함수의 선언문을 메인함수내에 삽입하면 Increment 함수의 호출이 허용되는 위치]
도 메인함수 내로 제한되어 버린다.
따라서 함수의 선언은 아래와 같이 메인함수 밖으로 빼내는 것이 일반적이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | int Increment(int n); /* Increment 함수의 선언 */ int TwoIncrement(int n); int main(void) { int num = 2; num = Increment(num); printf("num: %d \n", num); num = TwoIncrement(num); printf("num: %d \n", num); return 0; } int TwoIncrement(int n) { n = Increment(n); n = Increment(n); return n; } int Increment(int n) { n++; return n; } | cs |
반응형
'BackEnd > C' 카테고리의 다른 글
scanf함수를 이용한 정수와 실수의 입력 (0) | 2019.02.26 |
---|---|
함수와 관련된 기타 내용들 (0) | 2019.02.26 |
다양한 함수의 예 (0) | 2018.12.18 |
함수란 무엇인가? (0) | 2018.12.18 |
산술연산 과정에서 발생하는 형 변환의 규칙 (0) | 2018.12.18 |