Local, Global Variables
Local Variables
- ํจ์ ์์์๋ง ๋์ํ๊ณ ํจ์๊ฐ ๋๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ์ญ์ ๋๋ค.
mainย ํจ์์์์ ๊ณ์ ์ด์์๋ ๋ ์์ด ์๋๋ค!mainย ํจ์๋ย ํจ์ย ์ด๊ธฐ ๋๋ฌธ์ยmainย ํจ์ ์ข ๋ฃํยmainย ํจ์ ์์์ ์ ์ธ๋ ๋ณ์๋ ์ฌ๋ผ์ง๋ค.
Global Variables
- ํจ์๊ฐ ์คํ๋๊ธฐ ์ ์ ์ ์ธ๋๋ ๋ณ์
- ํ๋ก๊ทธ๋จ์ ์ฃผ๊ฐ ๋๋ย
mainย ํจ์๊ฐ ๋๋๊ธฐ ์ ๊น์ง ํญ์ ์ด์์๋ ๋ณ์์ด๋ค.
Example #1
#include <iostream>
using namespace std;
int x = 10; // ์ ์ญ๋ณ์
int makeDouble(int param){ // 4
int x; // 5 makeDouble ํจ์ ์์ ์ง์ญ๋ณ์
cout << "02: " << x << '\n'; // 6
x = param; // 7
cout << "03: " << x << '\n'; // 8
return param * 2; // 9
} // 10
int main(){ // 1
cout << "01: " << x << '\n'; // 2
x = makeDouble( x ); // 3 // 11
cout << "04: " << x << '\n'; // 12
return 0; // 13
}์ถ๋ ฅ
// [Output]
// 01: 10
// 02: -1031346592 (Garbage)
// 03: 10
// 04: 20ํจ์์์ ์ ์ด๋ ์ซ์ ์์๋๋ก ์๋ํ๋ค. ์คํ์ ์ฐจ๋ฅผ ์ ์ด๋ณด์.
์ฌ๊ธฐ์ ์ฃผ์๊น๊ฒ ๋ด์ผํ๋ ๊ฒ์ ๊ฐ์ ๊ฐ๋ค๊ณ ๋จ์ ๋,ย ๋ณต์ฌย ํ๋ค๋ ์ . ๊ทธ๋ฆฌ๊ณ ย ์ ์ญ ๋ณ์, ์ง์ญ ๋ณ์ย ๊ฐ ์ด๋ป๊ฒ ๋์๊ฐ๋์ง์ ๋ํย ๊ตฌ์กฐย ์ด๋ค.
mainย ํจ์ ์์ผ๋ก ๋ค์ด๊ฐ๋ค.- ์ ์ญ๋ณ์ย
xย ๋ฅผ ์ถ๋ ฅํ๋ค.01: 10
- ์ ์ญ ๋ณ์ย
x์ 10์ยmakeDoubleย ํจ์๋ก ๋ณต์ฌํ๋ค. - ๊ทธ ๊ฐ์ย
makeDoubleย ํจ์์ยparamย ์ผ๋ก ๋ณต์ฌํ๋ค. makeDoubleย ํจ์์ ์ง์ญ ๋ณ์ยxย ๋ฅผ ๋ง๋ ๋ค. ๊ฐ์ ์ ์ฅ๋์ง ์์๋ค.- ์ด ๊ฐ์ ์ถ๋ ฅํ๋ค. ๊ฐ์ ํ ๋นํ์ง ์์์ผ๋ฏ๋ก ์ฐ๋ ๊ธฐ๊ฐ์ด ์ถ๋ ฅ๋๋ค.
02: -1031346592 (Garbage)
makeDoubleย ํจ์์ยxย ์ ๋์ด์จยparamย ๊ฐ์ ๋ณต์ฌํ๋ค.- ๋ณต์ฌ๋ย
xย ๋ฅผ ์ถ๋ ฅํ๋ค.03: 10
param * 2ย ๊ฐ์ ๋ฐํํ๋ค.ยparamย ์ยmakeDoubleย ํจ์๊ฐ ์์ง ๋๋์ง ์์์ผ๋ฏ๋ก ์ด์์๋ค.- ํจ์๊ฐ ์ข
๋ฃ๋๊ณ ,ย
makeDoubleย ์ยxย ,ยparamย ์ ์ฌ๋ผ์ง๊ณ ยparam * 2ย ๋ง ์์ ์ ์ฅ์์ ์ ์ฅ๋๋ค. - ๋ฐํ๋ย
param * 2ย ์ยmainย ํจ์ยxย ์ ๋ฃ๋๋ค.ยparam * 2ย ์ ์ฌ๋ผ์ง๋ค. mainย ํจ์์ยxย ๋ฅผ ์ถ๋ ฅํ๋ค.04: 20
mainย ํจ์๊ฐ ๋๋๊ณ 0 ์ ๋ฐํํ๋ค.- ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ค.
Example #2
์์ ์์ ๋ฅผ ์ดํดํ๋ค๋ฉด, ์๋ ์ฝ๋์ ๊ฒฐ๊ณผ๊ฐ๋ ์ดํด๋ ๊ฒ์ด๋ค.
#include <iostream>
void increment(int x){
std::cout << "ํจ์ ์ฆ๊ฐ์ , x = " << x << '\n';
x++;
std::cout << "ํจ์ ์ฆ๊ฐํ, x = " << x << '\n';
}
int main(){
int x = 5;
std::cout << "์ฆ๊ฐ์ , x = " << x << '\n';
increment(x);
std::cout << "์ฆ๊ฐํ, x = " << x << '\n';
}์ถ๋ ฅ
// ์ฆ๊ฐ์ , x = 5
// ํจ์ ์ฆ๊ฐ์ , x = 5
// ํจ์ ์ฆ๊ฐํ, x = 6
// ์ฆ๊ฐํ, x = 5incrementย ํจ์ ํต๊ณผํ ์ฌ์ฉ๋์๋ ์ง์ญ๋ณ์๋ ๋ชจ๋ ์ฌ๋ผ์ก๊ธฐ์, mainย ํจ์์์์ย xย ๋ ๊ทธ๋๋ก 5 ์ด๋ค.
๋ง์ฝย mainย ํจ์์์ย xย ๊ฐ์ ๋ณํ์ํค๊ณ ์ถ๋ค๋ฉด, incrementย ํจ์์์ ๋ฐํ๊ฐ์ ๋ง๋ค์ดย xย ์ ๋์
ํ๋ ๋ฐฉํฅ์ผ๋ก ์ฝ๋๋ฅผ ์ผ์ด์ผ ํ๋ค.