[C]함수 선언,호출,정의/반환(return),매개변수,전달인자
함수 (전달인자, 반환값)
함수는 여러 번 반복되는 코드를 한번 또는 긴 코드를 분할 작성할때 사용
함수에는 매개변수(parameter) 와 반환값(return)이 존재함
그러나 매개변수와 반환값이 필수는 아니다.
main함수는
int main(){
return 0;
}
이렇게 작성된다.,
여기서 소괄호() 안에 들어갈 값이 매개변수(parameter)이고
return 뒤의 값이 반환값이다.
따라서 main함수는 매개변수가 없고 반환값이 0인 함수이다.
함수의 선언
함수를 선언하는 방법은 아래와 같다
int add (int a, int b){
//반환형 함수명(매개변수)
int c = a + b;
return c;
//값의 반환
}
매개변수(parameter) 는 함수 밖에서 입력받은 값을 함수 안에서 처리할 때 사용된다.
반환값은 함수가 반환할 값이고 반환형은 그 반환값의 자료형이 되어야한다.
위의 add는 a,b 두개의 정수를 입력받아 더한값을 출력하는 함수이다
그럼 함수명은 add 그리고 c는 a,b를 더한값을 반환한다
#include <stdio.h>
int add (int a, int b){
//반환형 함수명(매개변수)
int c = a + b;
return c;
//값의 반환
}
int main(){
int k; //int k 선언
int j; //int j 선언
printf("두 개의 숫자를 입력해주세요 : "); //문자열 출력
scanf("%d %d", &k, &j); //입력받은 값을 k, j에 저장
printf("두 수의 합은 %d입니다.", add(k, j)); //add함수 호출
return 0; //종료
}
%d는 정수를 입력받을때 사용되며
scanf("%d %d", &k, &j);에서 공백을 기준으로 두 개의 정수를 입력받아 각각 k와 j에 저장한다.
int add(int a, int b)는 매개변수(parameter)라고 했다.
매개변수는 쉽게 설명하면 자판기 안에 들어간 동전이다.. 자판기에 동전이 들어가면 계산을 해야하지 않는가?
그럼 동전을 넣어줘야 자판기가 계산을 하는데 동전을 넣는걸 인자값(argument)라고 한다.
main 함수에 인자값(동전)을 받는 함수는 총 2개이다
1. scanf 문에서 키보드 입력으로 k와j값을 인자값(argument)로 받아온다.
2. add(k, j) 에 위 스캔문에 저장한 인자값을 add(a+b) 라는 매개변수가 있는 함수에 인자값으로 넣어준다
return
return에는 두 가지 의미가 있는데
1. 함수의 종료 그리고 의미와 값을 반환하는 의미를 지닌다.
그러나 return은 두 가지 의미 중 하나의 의미만 사용이 가능하다
값을 반환하지 않는 함수에 return을 사용해 함수를 종료시키는 것이다.
#include <stdio.h> // 올바른 헤더 파일
void positiveNum(int a) {
if (a > 0) {
printf("양수를 입력 받았습니다\n");
} else if (a <= 0) {
return;
}
}
int main() {
int a;
printf("실수를 입력하세요: ");
scanf("%d", &a);
positiveNum(a);
return 0;
}
return을 사용하지 않아도 함수는 정상적으로 작동할 수 있다.
따라서 아래와 같은 코드도 오류없이 실행될 수 있을 것이다.
#include <stdio.h> // 올바른 헤더 파일
void positiveNum(int a) {
if (a > 0) {
printf("양수를 입력 받았습니다\n");
} else if (a <= 0) {
}
}
int main() {
int a;
printf("실수를 입력하세요: ");
scanf("%d", &a);
positiveNum(a);
}
실행은 되지만 기계에 함수를 정상적으로 종료하겠다는 의미를 전달해 오류를 방지 할 수 있다.