▶ 이전강의
- 바로가기
[C++] 10. 이중포인터
▶ 이전강의- 바로가기 [C++] 9. Char, 구조체, void 포인터▶ 이전강의- 바로가기 [C++] 8. 배열과 포인트 연산▶ 이전강의- 바로가기 [C++] 7. 포인터▶ 이전강의- 바로가기 [C++] 6. TextRPG 레벨업 시스
lhy-info.tistory.com
1. 함수란?
- 기능을 만들어 준다.
- 일종의 사용할 수 있는 부품이라 본다.
▶ 형태
- 반환타입 함수명(매개변수){} 로 구성
- 반환타입 : 함수가 반환하는 값의 타입
- 함수명 : 함수의 이름을 의미하며 가급적이면 이 함수의 역할을 정확히 표시하는 것이 가독성에 좋음
- 매개변수 : 함수가 호출될 때 전달되는 값, 있을수도 있고 없을수도 있음
- {} : 함수의 본체, 함수가 실행될 때 수행되는 코드가 들어감
▶ 실습
int Sum(int a, int b)
{
return a + b;
}
int OutputNumber(int num)
{
cout << "OutputNumber : " << num << endl;
return num;
}
- 결과를 반환해주는 함수 형태를 Call by Value 라 부름
- return 키워드를 이용해 반환값을 지정해준다.
void OutputText()
{
cout << "OutputText" << endl;
}
- void로 반환값 없이 함수를 만들 수 있음
▶ 결과
int main()
{
cout << "ㅡㅡㅡㅡㅡㅡ함수" << endl;
cout << "Sum : " << Sum(10, 20) << endl; // 30
cout << "Sum : " << Sum(100, 200) << endl; // 300
OutputText();
OutputNumber(100);
}
- 함수를 호출할때 함수명(인자); 형태로 호출
- 몇번이건 활용 가능
2. 지역변수란?
- 코드 블럭안에 생성되는 변수를 얘기함
- stack영역에 저장되기 때문에 함수가 끝나면 사라진다.
▶ 실습
void ChangeNumber(int num)
{
num = 10;
cout << "int num : " << num << endl;
}
int main()
{
cout << "ㅡㅡㅡㅡㅡㅡ지역변수" << endl;
int num = 0;
ChangeNumber(num);
cout << "num : " << num << endl; // 0
return 0;
}
▶ 결과
- main() 함수에 int num 값이 변할 것 처럼 보이지만 main()의 지역 변수이기 때문에 값이 변하지 않았다.
3. 전역변수란?
- 전역변수는 프로그램이 종료될때까지 메모리에 남아있음
- 전역변수는 모든 함수에서 접근 가능
▶ 실습
int g_iNum = 0;
void g_ChangeNumber()
{
g_iNum = 10;
}
int main()
{
cout << "ㅡㅡㅡㅡㅡㅡ전역변수" << endl;
g_iNum = 0;
g_ChangeNumber();
cout << "g_iNum : " << g_iNum << endl; // 10
return 0;
}
▶ 결과
- 전역변수는 어떤 함수에서도 공유되는 함수이기 때문에 변경이 가능
4. 역참조
void ChangeNumber_point(int* num)
{
*num = 10;
}
int main()
{
cout << "ㅡㅡㅡㅡㅡㅡ역참조" << endl;
int numpoint = 0;
ChangeNumber_point(&numpoint);
cout << "numpoint : " << numpoint << endl; // 10
return 0;
}
- 포인터를 이용해 역참조로 num의 값을 변경
- 결과값을 변경해주는 함수 형태를 Call by Address라 한다.
▶ 결과
- 주소값을 이용해 변경하는 것이니 당연히 변경 가능
4. 함수 오버로딩
- 같은 이름의 함수를 여러개 만들 수 있다.
- 단, 함수의 이름은 같지만 매개변수의 타입이나 개수가 달라야 한다.
▶ 실습
void ChangeNumber(int num)
{
num = 10;
cout << "int num : " << num << endl;
}
void ChangeNumber(float num)
{
num = 20.3f;
cout << "float num : " << num << endl;
}
int main()
{
cout << "ㅡㅡㅡㅡㅡㅡ함수 오버로딩" << endl;
ChangeNumber(10); // int형으로 오버로딩
ChangeNumber(0.0f); // float형으로 오버로딩
return 0;
}
▶ 결과
- 같은 이름의 함수지만 자료형의 따라 다른 결과가 나오는 것을 볼 수 있음
5. 디폴트 매개변수
- 함수의 매개변수에 기본값을 지정해줄 수 있다.
- 매개변수를 넘기지 않아도 기본값으로 사용된다.
▶ 실습
void Output(int num = 10)
{
cout << "Output : " << num << endl;
}
int main()
{
cout << "ㅡㅡㅡㅡㅡㅡ디폴트 매개변수" << endl;
Output(); // 10
Output(100); // 100
return 0;
}
▶ 결과
- 매개변수를 넘기지 않아도 되고 넘겨도 됨
'C++ > C++입문' 카테고리의 다른 글
[C++] 13. TextRPG 함수화_1 (0) | 2025.04.14 |
---|---|
[C++] 12. 빙고게임 함수화 (0) | 2025.04.11 |
[C++] 10. 이중포인터 (0) | 2025.04.09 |
[C++] 9. Char, 구조체, void 포인터 (0) | 2025.04.09 |
[C++] 8. 배열과 포인트 연산 (0) | 2025.04.08 |