์ง์ญ ๋ณ์, ์ ์ญ ๋ณ์, ์ ์ ๋ณ์
C์ธ์ด์์ ๋ณ์์ ์ ํจ ๋ฒ์์ ์๋ช ์ ํ๋ก๊ทธ๋จ์ ๋์์ ์ดํดํ๊ณ ์ ์ดํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ๋ค. ์ด ๊ธ์์๋ C์ธ์ด์์ ์ฌ์ฉ๋๋ ์ธ ๊ฐ์ง ์ฃผ์ ๋ณ์ ์ ํ์ธ ์ง์ญ ๋ณ์(Local Variables), ์ ์ญ ๋ณ์(Global Variables), ์ ์ ๋ณ์(Static Variables)์ ๋ํด ์ค๋ช ํ๋ค.
โญ 1. ์ง์ญ ๋ณ์ (Local Variables)
์ง์ญ ๋ณ์๋ ํจ์ ๋ด๋ถ์์ ์ ์ธ๋๋ฉฐ, ํด๋น ํจ์ ๋ด์์๋ง ์ ๊ทผํ ์ ์๋ค. ํจ์์ ํธ์ถ์ด ์์๋ ๋ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๊ณ , ํจ์์ ์คํ์ด ๋๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋๋ค. ์ด๋ฌํ ํน์ฑ ๋๋ฌธ์ ์ง์ญ ๋ณ์๋ ํจ์์ ๋ ๋ฆฝ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ ๋ฐ ๊ธฐ์ฌํ๋ค.
void function() {
int localVariable = 5; // ์ง์ญ ๋ณ์ ์ ์ธ
printf("%d\n", localVariable); // ์ง์ญ ๋ณ์ ์ฌ์ฉ
}
โญ 2. ์ ์ญ ๋ณ์ (Global Variables)
์ ์ญ ๋ณ์๋ ํจ์ ์ธ๋ถ์์ ์ ์ธ๋๋ฉฐ, ํ๋ก๊ทธ๋จ์ ์ด๋ ๊ณณ์์๋ ์ ๊ทผํ ์ ์๋ค. ํ๋ก๊ทธ๋จ์ ์์ ์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๊ณ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ ๋๊น์ง ์ ์ง๋๋ค. ์ ์ญ ๋ณ์๋ ์ฌ๋ฌ ํจ์๋ค ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ํ์๊ฐ ์์ ๋ ์ ์ฉํ์ง๋ง, ๊ณผ๋ํ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ๋ณต์ก์ฑ์ ์ฆ๊ฐ์ํค๊ณ ๋๋ฒ๊น ์ ์ด๋ ต๊ฒ ํ ์ ์๋ค.
int globalVariable = 10; // ์ ์ญ ๋ณ์ ์ ์ธ
void function() {
printf("%d\n", globalVariable); // ์ ์ญ ๋ณ์ ์ฌ์ฉ
}
โญ 3. ์ ์ ๋ณ์ (Static Variables)
์ ์ ๋ณ์๋ static ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธ๋๋ค. ์ ์ ๋ณ์๋ ์ง์ญ ์ ์ ๋ณ์์ ์ ์ญ ์ ์ ๋ณ์์ ๋ ๊ฐ์ง ํํ๋ก ๋๋๋ค.
1. ์ง์ญ ์ ์ ๋ณ์: ํจ์ ๋ด๋ถ์ ์ ์ธ๋๋ฉฐ, ํ๋ก๊ทธ๋จ ์คํ์ด ์์๋ ๋ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๊ณ ํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๋ ๋๊น์ง ์ ์ง๋๋ค. ๊ทธ๋ฌ๋ ํด๋น ๋ณ์๋ ์ ์ธ๋ ํจ์ ๋ด์์๋ง ์ ๊ทผํ ์ ์๋ค. ํจ์ ํธ์ถ ๊ฐ์ ๋ณ์์ ๊ฐ์ด ์ ์ง๋๋ค. ์ค์ ํ๋ก์ ํธ์์๋ ์ฌ์ฉํด๋ณธ ์ ์๋ ์ผ์ด์ค์ด๋ค.
void function() {
static int staticLocalVariable = 0; // ์ง์ญ ์ ์ ๋ณ์ ์ ์ธ
staticLocalVariable++;
printf("%d\n", staticLocalVariable); // ๊ฐ์ ํจ์ ํธ์ถ ๊ฐ ์ ์ง๋จ
}
2. ์ ์ญ ์ ์ ๋ณ์: ํจ์ ์ธ๋ถ์ ์ ์ธ๋์ง๋ง ํ์ผ ๋ด๋ถ์์๋ง ์ ๊ทผํ ์ ์๋ค. ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ํ์ผ๋ค์์๋ ์ ๊ทผํ ์ ์์ด, ํด๋น ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋์ ๋ฒ์๋ฅผ ์ ํํ๋ ๋ฐ ๋์์ด ๋๋ค.
static int staticGlobalVariable = 20; // ์ ์ญ ์ ์ ๋ณ์ ์ ์ธ
void function() {
printf("%d\n", staticGlobalVariable); // ์ ์ญ ์ ์ ๋ณ์ ์ฌ์ฉ
}
โญ 4. Code
#include <stdio.h>
// ์ ์ญ ๋ณ์ ์ ์ธ
int globalVariable = 10;
// ์ ์ญ ์ ์ ๋ณ์ ์ ์ธ: ์ด ํ์ผ ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
static int staticGlobalVariable = 20;
// ํจ์ ์ ์ธ
void function(void);
void staticFunction(void);
int main() {
printf("์ ์ญ ๋ณ์ ์ด๊ธฐ๊ฐ: %d\n", globalVariable);
printf("์ ์ญ ์ ์ ๋ณ์ ์ด๊ธฐ๊ฐ: %d\n\n", staticGlobalVariable);
function();
function();
function();
staticFunction();
staticFunction();
return 0;
}
void function() {
// ์ง์ญ ๋ณ์ ์ ์ธ
int localVariable = 5;
printf("์ง์ญ ๋ณ์: %d\n", localVariable);
// ์ง์ญ ์ ์ ๋ณ์ ์ ์ธ: ํจ์ ํธ์ถ ๊ฐ ๊ฐ ์ ์ง
static int staticLocalVariable = 0;
staticLocalVariable++;
printf("์ง์ญ ์ ์ ๋ณ์: %d\n", staticLocalVariable);
// ์ ์ญ ๋ณ์์ ์ ์ญ ์ ์ ๋ณ์ ์ฌ์ฉ
globalVariable += 10;
staticGlobalVariable += 10;
printf("์ ์ญ ๋ณ์: %d\n", globalVariable);
printf("์ ์ญ ์ ์ ๋ณ์: %d\n\n", staticGlobalVariable);
}
void staticFunction() {
// ์ด ํจ์๋ ์ ์ญ ๋ณ์์ ์ ์ญ ์ ์ ๋ณ์์ ํ์ฌ ๊ฐ์ ๋ณด์ฌ์ค๋ค.
printf("staticFunction์์ ๋ณธ ์ ์ญ ๋ณ์: %d\n", globalVariable);
printf("staticFunction์์ ๋ณธ ์ ์ญ ์ ์ ๋ณ์: %d\n\n", staticGlobalVariable);
}
์ง์ญ ๋ณ์, ์ ์ญ ๋ณ์, ์ ์ ๋ณ์๋ ๊ฐ๊ฐ ๋ค๋ฅธ ์ ํจ ๋ฒ์์ ์๋ช ์ ๊ฐ์ง๋ฉฐ, C์ธ์ด ํ๋ก๊ทธ๋๋ฐ์์ ์ค์ํ ์ญํ ์ ํ๋ค. ์ง์ญ ๋ณ์๋ ํจ์์ ๋ ๋ฆฝ์ฑ์ ์ง์ํ๊ณ , ์ ์ญ ๋ณ์๋ ๋ฐ์ดํฐ ๊ณต์ ๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ฉฐ, ์ ์ ๋ณ์๋ ๋ฉ๋ชจ๋ฆฌ์ ํจ์จ์ ์ฌ์ฉ๊ณผ ๋ณ์์ ์ ๊ทผ ๋ฒ์๋ฅผ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ด๋ฌํ ๋ณ์๋ค์ ์ ์ ํ ์ฌ์ฉํ๋ ๊ฒ์ ํ๋ก๊ทธ๋จ์ ํจ์จ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๋ฐ ๊ธฐ์ฌํ๋ค.
'๐ท C์ธ์ด 30๊ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C/C++ Tip] 25. C์ธ์ด 2์ฐจ์ ๋ฐฐ์ด (0) | 2024.11.10 |
---|---|
[C/C++ Tip] 24. C์ธ์ด ํ์ผ ์ ์ถ๋ ฅ (1) | 2024.11.09 |
[C/C++ Tip] 22. C์ธ์ด ๋ฐ๋ณต๋ฌธ : While๋ฌธ (0) | 2024.11.09 |
[C/C++ Tip] 21. C์ธ์ด ๋ฐ๋ณต๋ฌธ: For๋ฌธ (0) | 2024.11.09 |
[C/C++ Tip] 20. C์ธ์ด ์กฐ๊ฑด๋ฌธ ๋ง์คํฐํ๊ธฐ : Switch๋ฌธ (1) | 2024.11.05 |