ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ณ ์์ ์ ์ํํ๊ธฐ ์ํด ์ฝ๋ ๋ธ๋ญ์ผ๋ก ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
C++์์ ํจ์๋ ์ด๋ฆ์ด ์ฃผ์ด์ง๊ณ ํ๋ก๊ทธ๋จ์ ํน์ ์ง์ ์์ ํธ์ถ๋ ์ ์๋ ๋ช ๋ น๋ฌธ์ ๊ทธ๋ฃน์ ๋๋ค. ํจ์๋ฅผ ์ ์ํ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
type name ( parameter1, parameter2, ...) { statements }
type ๋ฐํ๋๋ ๋ฐ์ดํฐ์ ํ์ ์ ๋๋ค.
name ํจ์์ ์ด๋ฆ์ ๋๋ค.
(parameter 1, parameter 2, …), ์ ๋ฌ์ธ์ ์ ๋๋ค. ํธ์ถ๋ ์์น์์ ํจ์์ ์ธ์๋ฅผ ์ ๋ฌํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
- statementsํจ์์ ๋ณธ์ฒด์
๋๋ค. ํจ์๊ฐ ์ค์ ๋ก ์ํํ๋ ์์
์ ์ง์ ํ๋ ์ค๊ดํธ { }๋ก ๋๋ฌ์ธ์ธ ๋ช
๋ น๋ฌธ ๋ธ๋ก์
๋๋ค.
์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
// function example
#include <iostream>
using namespace std;
int addition (int a, int b)
{
int r;
r=a+b;
return r;
}
int main ()
{
int z;
z = addition (5,3);
cout << "The result is " << z;
}
The result is : 8
์์ ์์์ ์ ๋ฌ์ธ์(argument)๊ฐ ๋งค๊ฐ๋ณ์(parameter)์ ๋ณต์ฌ๊ฐ ๋์ด์ ๋์ด๊ฐ๊ฒ ๋๋ค.
return r;
Return ํค์๋๊ฐ ์คํ๋๋ฉด ํด๋น ํจ์์์ return ๊ฐ์ด ํจ์๋ฅผ ํธ์ถํ main์ผ๋ก ๋์๊ฐ
Z๋ณ์์ ๊ฐ์ ๋ฃ์ด์ค์ ์๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ main์ ๋ค์์ ํธ์ถํ์ฌ ์ด ๊ฐ์ ๊ฐ๋จํ ์ธ์ํฉ๋๋ค.
cout << "The result is " << z;
ํจ์๋ ์ค์ ๋ก ํ๋ก๊ทธ๋จ ๋ด์์ ์ฌ๋ฌ ๋ฒ ํธ์ถ๋ ์ ์์ผ๋ฉฐ ํด๋น ์ธ์๋ ๋น์ฐํ ๋ฆฌํฐ๋ด์๋ง ๊ตญํ๋์ง ์์ต๋๋ค.
// function example
#include <iostream>
using namespace std;
int subtraction (int a, int b)
{
int r;
r=a-b;
return r;
}
int main ()
{
int x=5, y=3, z;
z = subtraction (7,2);
cout << "The first result is " << z << '\n';
cout << "The second result is " << subtraction (7,2) << '\n';
cout << "The third result is " << subtraction (x,y) << '\n';
z= 4 + subtraction (x,y);
cout << "The fourth result is " << z << '\n';
}
์ฒซ ๋ฒ์งธ ๊ฒฐ๊ณผ๋ 5์
๋๋ค.
๋ ๋ฒ์งธ ๊ฒฐ๊ณผ๋ 5์
๋๋ค.
์ธ ๋ฒ์งธ ๊ฒฐ๊ณผ๋ 2์
๋๋ค.
๋ค ๋ฒ์งธ ๊ฒฐ๊ณผ๋ 6์
๋๋ค
void ํ์ ํจ์
ํจ์์ ๋ํด ์์ ํ์๋ ๊ตฌ๋ฌธ: ํ์ ์ผ๋ก ์์ํ๋ ์ ์ธ์ด ํ์ํฉ๋๋ค. ์ด๊ฒ์ ํจ์๊ฐ ๋ฐํํ๋ ๊ฐ์ ์ ํ์ ๋๋ค. ํ์ง๋ง ํจ์๊ฐ ๊ฐ์ ๋ฐํํ ํ์๊ฐ ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์ด๋ ์ฌ์ฉ๋๋ ํ์ ์ , ๊ฐ์ด ์์์ ๋ํ๋ด๋ ํน์ํ ํ์ ์ด๋ค. ์๋ฅผ ๋ค์ด, ๋จ์ํ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ ํจ์๋ ์ด๋ค ๊ฐ๋ ๋ฐํํ ํ์๊ฐ ์์ ์ ์์ต๋๋ค:
// void function example
#include <iostream>
using namespace std;
void printmessage ()
{
cout << "I'm a function!";
}
int main ()
{
printmessage ();
}
"I'm a function!"
voidํจ์์ ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์์ ํจ์๊ฐ ํธ์ถ๋ ๋ ์ค์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ๋ช ์์ ์ผ๋ก ์ง์ ํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ printmessage๊ณผ ๊ฐ์ด ์ ์ธํ ์ ์์ต๋๋ค.
void printmessage (void)
{
cout << "I'm a function!";
}
main์ ๋ฐํ ๊ฐ
๊ฐ | ์ค๋ช |
0 | ํ๋ก๊ทธ๋จ์ ์ฑ๊ณต์ ์ด์๋ค |
EXIT_SUCCESS | ํ๋ก๊ทธ๋จ์ด ์ฑ๊ณตํ์ต๋๋ค(์์ ๋์ผ). ์ด ๊ฐ์ header ์ ์ ์๋์ด <cstdlib>์์ต๋๋ค. |
EXIT_FAILURE | ํ๋ก๊ทธ๋จ์ด ์คํจํ์ต๋๋ค. ์ด ๊ฐ์ header ์ ์ ์๋์ด <cstdlib>์์ต๋๋ค. |
์ ๋ฌ์ธ์(argument)
์์์ ๋ณธ ํจ์์์ ์ธ์๋ ํญ์ ๊ฐ์ผ๋ก ์ ๋ฌ๋์์ต๋๋ค . ์ฆ, ํจ์๋ฅผ ํธ์ถํ ๋ ํจ์์ ์ ๋ฌ๋๋ ๊ฒ์ ํธ์ถ ์๊ฐ์ ์ด๋ฌํ ์ธ์์ ๊ฐ์ด๋ฉฐ ํจ์ ๋งค๊ฐ๋ณ์๊ฐ ๋ํ๋ด๋ ๋ณ์์ ๋ณต์ฌ๋ฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
int x=5, y=3, z;
z = addition ( x, y );
X, y์ ๊ฒฝ์ฐ, ํจ์ ์ถ๊ฐ๋ ๊ฐ๊ฐ ๋ฐ ์ ๊ฐ์ ๋ณต์ฌ๋ณธ์ธ 5์ 3์ด ์ ๋ฌ ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ค ๊ฒฝ์ฐ์๋ ํจ์ ๋ด์์ ์ธ๋ถ ๋ณ์๋ฅผ ์ง์ ์ ์ผ๋ก ์์ ํ๋ ๊ฒฝ์ฐ๊ฐ ์ ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ ค๋ฉด ๊ฐ ๋์ ์ฐธ์กฐ ๋ก ์ธ์๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค .
// passing parameters by reference
#include <iostream>
using namespace std;
void duplicate (int& a, int& b, int& c)
{
a*=2;
b*=2;
c*=2;
}
int main ()
{
int x=1, y=3, z=7;
duplicate (x, y, z);
cout << "x=" << x << ", y=" << y << ", z=" << z;
return 0;
}
x=2, y=6, z=14
์ฐธ์กฐ๋ ๋ณต์ฌ๋ณธ์ด ์๋ ์๋ณธ ๊ทธ๋๋ก์ ๋ณ์๊ฐ ๋งค๊ฐ๋ณ์์ ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค.
๋ฐ์๋ ์ฐธ์กฐ ๋ก ์ ๋ฌ๋์ง ์๊ณ ๊ฐ์ผ๋ก ์ ๋ฌ๋์ด ๊ฐ ์ ๋ณต์ฌ๋ณธ์ ๋์ ์์ฑํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ ์ถ๋ ฅ์ ์์ ๋์ง ์์ x, y, ๊ฐ z์ด ๋ฉ๋๋ค(์ฆ, 1, 3, 7).
void duplicate (int& a, int& b, int& c)
void duplicate (int a, int b, int c)
ํจ์จ์ฑ ๊ณ ๋ ค ์ฌํญ ๋ฐ const ์ฐธ์กฐ
๊ฐ์ ๊ทธ๋๋ก ๋ณต์ฌํด์ ์ธ์๋ก ๋๊ฒจ์ฃผ๊ฒ ๋๋ฉด ๋ชจ๋ ๊ฐ๋ค์ ๋ณต์ฌํด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์
์๊ฐ๋ณด๋ค ๋ง์ ๋ถํ๊ฐ ์๊ธธ์ ์์ต๋๋ค.
string concatenate (string a, string b)
{
return a+b;
}
๊ทธ๋ฌ๋ ๋ ๋งค๊ฐ๋ณ์๊ฐ ๋ชจ๋ ์ฐธ์กฐ ๋๋ ๊ฒฝ์ฐ ์ด ๋ณต์ฌ๋ฅผ ๋ชจ๋ ํผํ ์ ์์ต๋๋ค .
string concatenate (string& a, string& b)
{
return a+b;
}
์ฐธ์กฐ์ ์ํ ์ธ์์๋ ์ฌ๋ณธ์ด ํ์ํ์ง ์์ต๋๋ค. ํจ์๋ ์ธ์๋ก ์ ๋ฌ๋ ๋ฌธ์์ด(๋ณ์นญ)์์ ์ง์ ์๋ํ๋ฉฐ ๊ธฐ๊ปํด์ผ ํจ์์ ๋ํ ํน์ ํฌ์ธํฐ๋ฅผ ์ ๋ฌํ๋๋ฐ ์ด์ ๊ด๋ จํ์ฌ ์ฐธ์กฐ๋ฅผ ๋ฐ๋ ๋ฒ์ ์ ๊ฐ์ ๋ฐ๋ ๋ฒ์ ๋ณด๋ค ๋ณต์ฌ ๋น์ฉ์ด ๋ง์ด ์ ๊ฒ ๋ค์ด ํจ์ฌ ํจ์จ์ ์ ๋๋ค.
์ฐธ์กฐ ๋งค๊ฐ๋ณ์๊ฐ ์ด ํจ์์ ์ํด ์์ ๋์ง ์๋๋ก ๋ณด์ฅํ๋ ค๋ฉด const ๋ฅผ ๋ถ์ฌ ์์ํ ์ํค๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค.
string concatenate (const string& a, const string& b)
{
return a+b;
}
const์ ๊ฐ์ ์์ ํ ์ ์์ง๋ง ์ค์ ๋ก ๋ฌธ์์ด์ ์ค์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ง ์๊ณ ๋ ์ฐธ์กฐ(์ธ์์ ๋ณ์นญ)๋ก ํด๋น ๊ฐ์ ์ ๊ทผ ํ ์ ์์ต๋๋ค.
์ธ๋ผ์ธ ํจ์
ํจ์๋ฅผ ํธ์ถํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ํน์ ์ค๋ฒํค๋(์ธ์ ์๊ธฐ, ์ ํ ๋ฑ...)๊ฐ ๋ฐ์ํ๋ฏ๋ก ๋งค์ฐ ์งง์ ํจ์์ ๊ฒฝ์ฐ ํ๋ก์ธ์ค๋ฅผ ์ํํ๋ ๋์ ํธ์ถ๋ ํจ์์ ์ฝ๋๋ฅผ ๋จ์ํ ์ฝ์
ํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ผ ์ ์์ต๋๋ค.
Inline์ ์ ์ธํ๋ฉด ํน์ ํจ์์ ๋ํ ์ผ๋ฐ์ ์ธ ํจ์ ํธ์ถ ๋ฉ์ปค๋์ฆ๋ณด๋ค ์ธ๋ผ์ธ ํ์ฅ์ด ์ ํธ๋จ์ ์ปดํ์ผ๋ฌ์ ์๋ฆฝ๋๋ค. ์ด๊ฒ์ ํจ์์ ๋์์ ์ ํ ๋ณ๊ฒฝํ์ง ์์ง๋ง, ์ผ๋ฐ ํจ์ ํธ์ถ๋ก ํธ์ถ๋๋ ๋์ ํจ์ ๋ณธ๋ฌธ์ ์ํด ์์ฑ๋ ์ฝ๋๊ฐ ํจ์๊ฐ ํธ์ถ๋๋ ๊ฐ ์ง์ ์ ์ฝ์ ๋์ด์ผ ํ๋ค๋ ์ปดํ์ผ๋ฌ๋ฅผ ์ ์ํ๋ ๋ฐ๋ง ์ฌ์ฉ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ์์ ์ฐ๊ฒฐ ํจ์๋ ์ธ๋ผ์ธ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ ์ธํ ์ ์์ต๋๋ค.
inline string concatenate (const string& a, const string& b)
{
return a+b;
}
์ด๊ฒ์ ์ปดํ์ผ๋ฌ๊ฐ concatenate๊ฐ ํธ์ถ๋ ๋ ํ๋ก๊ทธ๋จ์ด ์ผ๋ฐ ํธ์ถ์ ์ํํ๋ ๋์ ์ธ๋ผ์ธ์ผ๋ก ํ์ฅ๋๋ ํจ์๋ฅผ ์ ํธํ๋ค๋ ๊ฒ์ ์๋ ค์ค๋๋ค. inlineํธ์ถ๋ ๋๊ฐ ์๋๋ผ ํจ์ ์ ์ธ์์๋ง ์ง์ ๋ฉ๋๋ค.
๋๋ถ๋ถ์ ์ปดํ์ผ๋ฌ๋ ๋ช ์์ ์ผ๋ก ์ง์ ์๋ก ํ์๋์ง ์์ ๊ฒฝ์ฐ์๋ ํจ์จ์ฑ์ ๊ฐ์ ํ ๊ธฐํ๊ฐ ์์ ๋ ์ธ๋ผ์ธ ํจ์๋ฅผ ์์ฑํ๋๋ก ์ฝ๋๋ฅผ ์ด๋ฏธ ์ต์ ํ inlineํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ์ง์ ์๋ ์ปดํ์ผ๋ฌ๊ฐ ์ด ํจ์์ ๋ํด ์ธ๋ผ์ธ์ด ์ ํธ๋จ์ ๋ํ๋ผ ๋ฟ์ด์ง๋ง ์ปดํ์ผ๋ฌ๋ ์ธ๋ผ์ธํ์ง ์๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ต์ ํํ ์ ์์ต๋๋ค. C++์์ ์ต์ ํ๋ ์ปดํ์ผ๋ฌ์ ์์๋ ์์ ์ ๋๋ค.
๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ
C++์์ ํจ์๋ ํธ์ถ์ ์ธ์๊ฐ ํ์ํ์ง ์์ ์ ํ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง ์๋ ์์ต๋๋ค. ์ด๋ฅผ ์ํด ํจ์๋ ๋ ์ ์ ์ธ์๋ก ํธ์ถ๋ ๋ ํจ์์์ ์ฌ์ฉ๋๋ ๋ง์ง๋ง ๋งค๊ฐ๋ณ์์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํด์ค ์ ์์ต๋๋ค.
// default values in functions
#include <iostream>
using namespace std;
int divide (int a, int b=2)
{
int r;
r=a/b;
return (r);
}
int main ()
{
cout << divide (12) << '\n';
cout << divide (20,4) << '\n';
return 0;
}
6
5
์ด ์์์๋ function ์ ๋ํ ๋ ๊ฐ์ ํธ์ถ์ด ์์ต๋๋ค divide. ์ฒซ ๋ฒ์งธ์์:
divide (12)
ํจ์์ ๋ ๊ฐ์ ๋งค๊ฐ๋ณ์๊ฐ ์๋๋ผ๋ ํธ์ถ์ ํ๋์ ์ธ์๋ง ํจ์์ ์ ๋ฌํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ํจ์๋ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ฅผ 2๋ก ๊ฐ์ ํฉ๋๋ค(ํจ์ ์ ์์์ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ฅผ ๋ก ์ ์ธํจ int b=2). ๋ฐ๋ผ์ ๊ฒฐ๊ณผ๋ 6์ ๋๋ค
๋ ๋ฒ์งธ ํธ์ถ์์:
divide (20,4)
ํธ์ถ์ ํจ์์ ๋ ๊ฐ์ ์ธ์๋ฅผ ์ ๋ฌํฉ๋๋ค. b๋ฐ๋ผ์ ( ) ์ ๊ธฐ๋ณธ๊ฐ int b=2์ ๋ฌด์ b๋๊ณ ์ธ์๋ก ์ ๋ฌ๋ ๊ฐ, ์ฆ 4๋ฅผ ์ทจํ์ฌ ๊ฒฐ๊ณผ 5๋ฅผ ์ฐ์ถํฉ๋๋ค.
ํจ์ ์ ์ธ
ํต์์ ์ผ๋ก ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํด๋นํจ์๋ณด๋ค ์ ๋ถ๋ถ์ ์กด์ฌํด์ผ ํฉ๋๋ค.
ํ์ง๋ง ํจ์๊ฐ ๋ ์ฝ๋์ ๋ค์ ์กด์ฌํ๋๋ผ๋ ์๋ถ๋ถํด์ ํด๋นํจ์์ ํํ๋ฅผ ๋ฏธ๋ฆฌ
์ ์ธํด์ฃผ๋ฉด ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
int protofunction (int first, int second);
int protofunction (int, int);
๋งค๊ฐ๋ณ์์ ์ด๋ฆ์ ํฌํจํ๋ฉด ๊ฐ๋ ์ฑ์ด ํฅ์๋ฉ๋๋ค.
// declaring functions prototypes
#include <iostream>
using namespace std;
void odd (int x);
void even (int x);
int main()
{
int i;
do {
cout << "Please, enter number (0 to exit): ";
cin >> i;
odd (i);
} while (i!=0);
return 0;
}
void odd (int x)
{
if ((x%2)!=0) cout << "It is odd.\n";
else even (x);
}
void even (int x)
{
if ((x%2)==0) cout << "It is even.\n";
else odd (x);
}
์ด ์๋ ์ค์ ๋ก ํจ์จ์ฑ์ ์๊ฐ ์๋๋๋ค. ์ฝ๋ ์ค์ ์ ๋ฐ์ผ๋ก ์ด ํ๋ก๊ทธ๋จ์ ๋ฒ์ ์ ์ง์ ์์ฑํ ์ ์์ต๋๋ค. ์ด์จ๋ ์ด ์์ ๋ ์ ์ ์ ์ ํจ์๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค
์ฌ๊ท
์ฌ๊ท์ฑ์ ํจ์๊ฐ ์ค์ค๋ก ํธ์ถ๋์ด์ผ ํ๋ ์์ฑ์
๋๋ค. ์์ ์ ๋ ฌ ๋๋ ์ซ์์ ๊ณ์น ๊ณ์ฐ๊ณผ ๊ฐ์ ์ผ๋ถ ์์
์ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ซ์( )์ ๊ณ์น์ ์ป์ผ๋ ค๋ฉด n!์ํ ๊ณต์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
n! = n * (n-1) * (n-2) * (n-3) ... * 1
๋ ๊ตฌ์ฒด์ ์ผ๋ก 5!(5์ ๊ณ์น)์ ๋ค์
5! = 5 * 4 * 3 * 2 * 1 = 120
๊ณผ ๊ฐ์ต๋๋ค. C++์์ ์ด๋ฅผ ๊ณ์ฐํ๋ ์ฌ๊ท ํจ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
// factorial calculator
#include <iostream>
using namespace std;
long factorial (long a)
{
if (a > 1)
return (a * factorial (a-1));
else
return 1;
}
int main ()
{
long number = 9;
cout << number << "! = " << factorial (number);
return 0;
}
์ฌ๊ท ํจ์์์ ์ฐ๋ฆฌ๋ ์์ ์ ๋ํ ํธ์ถ์ ํฌํจํ์ง๋ง ์ ๋ฌ๋ ์ธ์๊ฐ 1๋ณด๋ค ํฐ ๊ฒฝ์ฐ์๋ง, ๊ทธ๋ ์ง ์์ผ๋ฉด ํจ์๊ฐ 0์ ๋๋ฌํ๋ฉด ๊ณ์ํด์ ๋ชจ๋ ๊ฐ์ ๊ณฑํ๋ ๋ฌดํ ์ฌ๊ท ๋ฃจํ๋ฅผ ์ํํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
'๐ Development Study > ๐ป Win32API' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
WinMain (2) | 2022.09.05 |
---|---|
์ค๋ฒ๋ก๋ฉ๊ณผ ํ ํ๋ฆฟ (0) | 2022.08.18 |
๋ช ๋ น๋ฌธ ๋ฐ ํ๋ฆ ์ ์ด (0) | 2022.08.18 |
๊ธฐ๋ณธ ์ ์ถ๋ ฅ (0) | 2022.08.17 |
์ฐ์ฐ์ (0) | 2022.08.17 |
๋๊ธ