static ํจ์์ ๋ณ์์ ์ฐจ์ด
| ํญ๋ชฉ |
static ํจ์ |
static ๋ณ์ |
| ๋ชฉ์ |
ํจ์์ ์ ๊ทผ ์ ํ (ํ์ผ ๋ด๋ถ ์ ์ฉ) |
๋ณ์์ ์๋ช
์ ์ง + ์ ๊ทผ ์ ํ |
| ์๋ช
|
์ปดํ์ผ ํ์๋ถํฐ ํ๋ก๊ทธ๋จ ์ข
๋ฃ ์๊น์ง ์กด์ฌ (๋ณํ ์์) |
์ปดํ์ผ ํ์๋ถํฐ ์ข
๋ฃ ์๊น์ง ์กด์ฌ (์ ์ญ/์ง์ญ ๋ชจ๋) |
| ์ฌ์ฉ ์์น |
๋ณดํต .c ํ์ผ ์์ ์ ์๋ ๋์ฐ๋ฏธ ํจ์ |
์ง์ญ๋ณ์ or ์ ์ญ๋ณ์ |
| ์ธ๋ถ ์ ๊ทผ |
๋ค๋ฅธ ํ์ผ์์ ํธ์ถ ๋ถ๊ฐ |
๋ค๋ฅธ ํ์ผ์์ ์ฐธ์กฐ ๋ถ๊ฐ |
| ์ฃผ๋ก ์ฌ์ฉ๋๋ ์ |
count_digits, swap, itoa_helper ๋ฑ |
ํธ์ถ ํ์ ๋์ , ์บ์ ์ ์ฅ, ํ ๋ฒ๋ง ์ด๊ธฐํ ๋ณ์ ๋ฑ |
static ํจ์
// ft_printf.c ๋ด๋ถ
static int count_digits(int n)
{
int len = 0;
while (n)
{
n /= 10;
len++;
}
return len;
}
- ์ด ํจ์๋
ft_printf.c ํ์ผ ์์์๋ง ์ฌ์ฉ๋๋ค.
- ์ธ๋ถ
.c ํ์ผ์์ includeํ๊ฑฐ๋ ํธ์ถํ ์ ์๋ค.
- ๊ฐ์ ์ด๋ฆ์ ํจ์๊ฐ ๋ค๋ฅธ ํ์ผ์ ์์ด๋ ์ถฉ๋์ด ๋์ง ์๋๋ค.
static ์ง์ญ ๋ณ์
int call_counter(void)
{
static int count = 0;
return ++count;
}
- ์ด ํจ์๊ฐ ๋ช ๋ฒ ํธ์ถ๋๋์ง ๊ธฐ์ตํ๋ค.
static์ด ์์ผ๋ฉด count๋ ๋งค๋ฒ 0๋ถํฐ ์์ํ๋ค.
static์ ์ฐ๋ฉด, ํจ์๊ฐ ํธ์ถ๋ผ๋ count ๊ฐ์ด ์ ์ง๋๋ค.
static ์ ์ญ ๋ณ์
static int buffer[1024]; // ์ด ํ์ผ ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
buffer๋ ๋ค๋ฅธ ํ์ผ์์ extern์ผ๋ก ์ฐ๊ฒฐํ ์ ์๋ค.
- ์ค์ง ์ด
.c ํ์ผ ์์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
์์ฝ
| ์ํฉ |
static ์ฐ๋ ์ด์ |
| ํ์ผ ๋ด๋ถ ์ ์ฉ ํจ์ |
์ธ๋ถ ๋
ธ์ถ ๋ฐฉ์ง (๋งํฌ ๋ฒ์ ์ ํ) |
| ํจ์ ๋ด ์ํ ์ ์ฅ |
์ง์ญ static ๋ณ์๋ก ํจ์ ์ํ ์ ์ง |
| ์ ์ญ ๋ณ์ ์๋ |
์ ์ญ ๋ณ์์ ๋ฒ์๋ฅผ ํ์ผ ๋ด๋ก ์ ํ (์บก์ํ) |
| ํญ๋ชฉ |
์๋ฏธ |
| static ํจ์ |
๋ค๋ฅธ ํ์ผ์์ ๋ถ๋ฅด๋ฉด ์ ๋๋ค. |
| static ์ง์ญ ๋ณ์ |
ํจ์๋ ๋๋๋ ๊ฐ์ ์ ์งํ๋ค. |
| static ์ ์ญ ๋ณ์ |
์ธ๋ถ์์๋ ์ด ์ ์ญ ๋ณ์๋ฅผ ๋ชป ์ด๋ค. |