박가방
[C++] 함수 본문
1. 함수의 정의
함수란 특정기능을 독립적으로 수행하는 모듈화된 프로그램을 의미하며, 프로그램의 최소 단위이다.
컴파일러(Compiler)내 작성되는 main() 또한 함수이며, OS(Operating System)은 시작할 때 main 함수를 찾는다.
| 반환자료형 함수명(자료형 인수1, 자료형 인수 2) { 함수몸체 } |
| int func (int x, int y) { } |
반환자료형(retrurn datatype) : 함수 기능을 마치고 반환할 데이터의 자료형을 결정한다.
함수명 : 함수의 이름을 정의한다.
인수(arguement) : 매개변수(parameter)라고도 불리며, 함수 호출(call) 시 넘겨받는 데이터를 저장하는 변수이다. 함수 내부에서만 사용가능한 지역변수(local variable)이다.
C++ 함수는 반환값이 있는 함수와 없는 함수(void)로 나눌 수 있다.
- 반환값이 있는 함수는 호출될 경우 수행한 결과 값을 return 하며, 반환 값이 없는 함수의 경우 특정기능만 수행하도록 작성된다.
- 반환 타입은 배열을 제외한 모든타입이 가능하며, 만약 배열이 구조체나 객체에 포함될 경우 반환이 가능하다.
2. 함수의 선언 및 정의 순서
컴파일러는 main()함수부터 찾으므로, 함수 사용 시 선언 순서는 main 이전과 이후로 2가지로 나눌 수 있다.
2.1. main함수 이전에 do_Sum 함수를 선언 및 정의 할 경우
#include <iostream>
int do_Sum(int x, int y) { //함수의 선언 및 정의, 가급적 자세히 적을 것
return x + y;
}
int main() {
using namespace std;
int result = 0;
result = do_Sum(3,4);
cout << result << endl;
}
2.2. main함수 이전에 do_Sum 함수를 선언하고, 이후에 정의할 경우.
- 컴파일러는 main 함수부터 찾아작동하므로 main함수 이전에 do_Sum 함수를 사용하겠다고 선언해줘야한다.
#include <iostream>
int do_Sum(int x, int y); //함수의 선언
int main() {
using namespace std;
int result = 0;
result = do_Sum(3,4);
cout << result << endl;
}
int do_Sum(int x, int y) { // 함수의 정의
return x + y;
}
2.3 함수 내 함수 정의는 가능한가?
# include <iostream>
using namespace std;
void printHelloWorld()
{
cout << "Hello World" << endl;
}
int addTwoNumbers(int num_a, int num_b)
{
int sum = num_a + num_b; // 출력값을 맞춰주기위해 int.
printHelloWorld(); //가능. 그러나 함수안에 함수정의는 허용X, 파이썬이나 가능
return sum;
}
int main()
{
cout << 1 + 2 << endl;
cout << addTwoNumbers(1, 2) << endl; //1,2 : argument
printHelloWorld();
return 0;
}
- 불가능함. 함수 내 함수 부름(call)은 가능.
3. 함수의 자료형
- 변환 자료형으로 함수의 결과 값을 반환하므로 입력 값 및 반환 값에 유의하여야 한다.
3.1 인자 저장 값과 반환 값이 int형 이나, 입력값이 float형인 경우
- main 함수에서 do_Sum의 인자 1,2 입력 값이 3.14, 4.56이다.
- do_Sum 함수에서 저장되는 인자 1,2의 자료형은 int형 이므로 3과 4만 저장된다.
- 따라서 결과는 7
#include <iostream>
int do_Sum(int x, int y);
int main() {
using namespace std;
float result = 0;
result = do_Sum(3.14f,4.56f); //f는 컴파일러에게 float 값이라는 것을 알려주기 위함.
cout << result << endl;
}
int do_Sum(int x, int y) {
return x + y;
}
| 결과 : 7 |
3.2 인자 저장 값과 입력값이 float형 이나, 반환 값이 int형인 경우
- 반환자료형이 int형이므로 결과는 7
#include <iostream>
int do_Sum(float x, float y);
int main() {
using namespace std;
float result = 0;
result = do_Sum(3.14f,4.56f);
cout << result << endl;
}
int do_Sum(float x, float y) {
return x + y;
}
| 결과 : 7 |
3.3 반환 값, 인자 2 , 입력값 float 형 // 인자 1 int형
- main 함수에서 do_Sum의 인자 1 입력 값이 3.14이다.
- do_Sum 함수에서 저장되는 인자 1의 자료형은 int형 이므로 3만 저장된다.
- 따라서 3+ 4.56 = 7.56
#include <iostream>
float do_Sum(int x, float y);
int main() {
using namespace std;
float result = 0;
result = do_Sum(3.14f,4.56f);
cout << result << endl;
}
float do_Sum(int x, float y) {
return x + y;
}
| 결과 : 7.56 |
3.4 return 뒤에 명령문(statement)를 작성할 경우.
-함수는 return문이 있을 경우 결과 값과 사용한 메모리를 반환하고 기능을 마무리한다.
#include <iostream>
int do_Sum(float x, float y);
int main() {
using namespace std;
float result = 0;
result = do_Sum(3.14f,4.56f);
cout << result << endl;
}
int do_Sum(float x, float y) {
return x + y;
std::cout<< "Hello world" << std::endl;
}
| 결과 : 7 | Hellow world는 출력되지 않는다. |
Reference
1: https://studymake.tistory.com/115
2: https://min-zero.tistory.com/25
3: 홍정모의 따라하며 배우는 C++
'프로그램 언어 > C++' 카테고리의 다른 글
| [C++] 리터럴 상수 (Literal Constant) (0) | 2022.08.07 |
|---|---|
| [C++] Expression(표현식)과 Statement(명령문) 차이 (0) | 2022.08.07 |