티스토리 뷰
함수 사용 이유
함수를 사용하지 않은 코드(2로 나눈다는 부분이 중복됨)
#include <iostream>
using namespace std;
int main() {
int a = 10;
cout << "a의 값은" << a << "입니다" << endl;
a = a / 2;
cout << "a를 2로 나눈 값은" << a << "입니다" << endl;
int b = 4;
cout << "b의 값은" << b << "입니다" << endl;
b = b / 2;
cout << "b를 2로 나눈 값은" << b << "입니다" << endl;
int c = 8;
cout << "c의 값은" << c << "입니다" << endl;
c = c / 2;
cout << "c를 2로 나눈 값은" << c << "입니다" << endl;
return 0;
}
함수를 사용한 코드(코드 재사용, 간편함)
#include <iostream>
using namespace std;
void fun2(int x) {
cout << "값은 " << x << "입니다" << endl;
x = x / 2;
cout << "2로 나눈 값은 " << x << "입니다" << endl;
}
int main() {
int a = 10;
fun2(a); // 함수 호출
int b = 4;
fun2(b); // 함수 호출
int c = 8;
fun2(c);
return 0; // 함수 호출
}
출력 결과

함수를 사용한 코드와 사용하지 않은 코드
모두 동일한 결과값을 도출해냄
함수 선언 및 호출
함수 형식
float 계란후라이만들기(int 식용유, float 계란, char 소금){
후라이팬에 식용유를 두른다;
후라이팬에 계란을 깨뜨려 넣는다;
소금으로 약간 간을 한다;
return 계란후라이;
}
--> float : 자료형
--> 계란후라이만들기 : 함수명
--> return 계란후라이의 계란후라이는 float 자료형이어야 한다.
float 계란후라이만들기( ){
return 계란후라이;
}
--> ( ) 입력값(매개변수)이 필요 없을 때는 아무것도 적지 않는다.
void 계란후라이만들기(int 식용유, float 계란, char 소금){
후라이팬에 식용유를 두른다;
후라이팬에 계란을 깨뜨려 넣는다;
소금으로 약간 간을 한다;
}
--> return 값이 필요 없을 때 void를 쓰거나, 아무것도 적지 않는다.
함수 선언/ 구현/ 호출
함수 선언
- 함수 형태를 명시하는 것(이름, 입력, 출력)
- main 이전에 해야 함
함수 호출
#include <iostream>
using namespace std;
float plus2(float x); // 함수 선언
// float : 출력
// plus2 : 이름
// float x : 입력
int main() {
float a = 10;
float b = plus2(a); // 함수 호출
cout << "결과는 " << b << "입니다" << endl;
return 0;
}
// { } 안에 함수 구현
float plus2(float x) {
float result = x + 2;
return result;
}
독립적인 기능 모듈화
- 프로그램을 단순하고 간결하게 표현
- 프로그램의 가독성을 높임
- 디버깅하기 편해짐
- 유지보수에 용이함
- 다른 프로그램 코딩 시 재활용 가능
함수 정의(구현)
- 함수 선언 부분 코드에서 세미콜론(;)을 제외한 나머지를 작성
- 중괄호 { } 안에 함수가 수행할 일을 작성
- main 이전에 정의를 하면 함수 선언을 생략해도 됨
=> 그러나, main 함수의 가독성이 떨어짐
실습 문제 1
#include <iostream>
using namespace std;
float plus2(float x); // 함수 선언
int main() {
float a = 10;
float b = plus2(a);
cout << "결과는 " << b;
return 0;
}
// 함수 구현
float plus2(float x) {
float result = x + 2;
return result;
}
출력 결과

지역변수
- 함수에서 생성한 변수는 함수 사용이 끝나면 사라짐
- 함수 안에서만 사용할 수 있음
- 함수 사용이 끝나면 변수에 할당된 메모리를 다시 반환함(변수 인식을 못함)
코드 예시
main()에서의 a, b와 plus2 함수에서의 a, b는 서로 다른 존재이다.
'동명이인' 개념
#include <iostream>
using namespace std;
int plus2(int a, int b); // 함수 선언
int main() {
int a = 10;
int b = 20;
plus2(a, b);
return 0;
}
// 함수 구현
int plus2(int a, int b) {
int result;
result = a + b;
return result;
}
전역변수
- 함수 밖에서 선언된 변수
- 현재 프로그래밍 되고 있는 프로그램 안의 모든 함수에서 자유롭게 접근 가능
코드 예시
#include <iostream>
using namespace std;
void order();
int number = 1;
int main() {
order();
order();
number++;
order();
return 0;
}
void order() {
cout << "손님의 주문번호는 " << number << "입니다" << endl;
number++;
}
실행 결과

지역변수 | 전역변수 | 정적변수 |
함수 안에서 선언 변수가 선언된 함수에서만 사용 가능 함수가 끝나면 메모리를 반환함 |
함수 밖에서 선언 어떤 함수에서도 접근 가능 프로그램이 마칠 때까지 계속 메모리를 가짐 |
static 지역변수를 정적변수로 변환해주는 키워드 함수 실행이 끝나더라도 사라지지 않고 계속 유지됨 단 한 번만 생성되고 초기화함 함수가 재호출되어서 다시 초기화 코드를 만나더라도 이것을 무시함 |
정적변수 코드 예시
#include <iostream>
using namespace std;
void order();
int main() {
order(); // 1
order(); // 2
order(); // 3
return 0;
}
void order() {
static int number = 1;
cout << "손님의 주문번호는 " << number << "입니다" << endl;
number++;
}
출력 결과

static은 한 번만 선언되고 초기화됨
첫 번째는 1로 초기화된 후 number++로 2가 됨
두 번째는 이미 생성하고 초기화된 상태라서
static 선언 코드 무시하고 바로 cout 출력된 후 number++로 3이 됨
세 번째도 이미 생성하고 초기화된 상태라서
static 선언 코드 무시하고 바로 cout 출력됨
static 변수를 사용하지 않을 경우
출력 결과

실습 문제 1
0을 입력할 때까지 무한반복하여 두 수를 입력받고 두 수의 곱을 출력하는 프로그램을 만드세요
이때, 두 수를 곱할 때에는 함수를 사용하여 구현하세요
#include <iostream>
using namespace std;
int func(int x, int y);
int main() {
int a, b;
int result;
while (1) {
cout << "곱셈 프로그램입니다" << endl;
cout << "프로그램을 멈추려면 숫자 0을 입력하세요" << endl;
cout << "첫번째 수 입력: ";
cin >> a;
if (a == 0)
break;
// return 0; 도 가능함
cout << "두번째 수 입력: ";
cin >> b;
result = func(a, b);
cout << "결과는 " << result << endl;
}
return 0;
}
int func(int x, int y) {
return x * y;
}
출력 결과

실습 문제 2
4.32시간은 몇 시간, 분, 초인지 계산하는 프로그램을 함수 3개를 사용하여 구현하세요
#include <iostream>
using namespace std;
int hour(double x);
int minute(double x);
int secs(double x);
int main() {
double time = 4.32;
int hh, mm, ss;
hh = hour(time); // 4
time -= hh; // 0.32 시간
time = time * 60; // 분 단위로 변경
mm = minute(time);
time -= mm;
time = time * 60; // 초 단위로 변경
ss = secs(time);
cout << "4.32시간은 " << hh << "시간 " << mm << "분 " << ss << "초 입니다";
return 0;
}
// 시, 분, 초 --> 함수 생성
int hour(double x) {
int h;
h = (int)x; // 4.32 시간 --> 4 (int)로 형변환
return h;
}
int minute(double x) {
int m;
m = (int)x;
return m;
}
int secs(double x) {
int s;
s = (int)x;
return s;
}
출력 결과

'C++' 카테고리의 다른 글
문자열 (0) | 2024.12.06 |
---|---|
배열의 선언과 접근 및 반복문 (0) | 2024.12.05 |
반복문(while, do while) (0) | 2024.12.05 |
반복문(for, 이중 for문 - 별찍기) (0) | 2024.10.21 |
조건문(if, if else, else if) (0) | 2024.10.12 |