https://codebunny99.tistory.com/122
CPU ๋ฉ๋ชจ๋ฆฌ์ ๋ํด ํ์ตํ๊ธฐ
(ํ์) ๋ณ์ = ๋ฐ์ดํฐ =์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์ ๋ณ์, ์ค๋ฅธ์ชฝ์ ๋ฐ์ดํฐ๋ผ๊ณ ํ๋ค. count = 3 ์ฝ๋ (Code) ์์ญ:ํ๋ก๊ทธ๋จ์ "์๋ฆฌ์ฑ "์ด๋ผ๊ณ ์๊ฐํ ์ ์๋ค.์๋ฆฌ์ฑ ์๋ ์๋ฆฌ ๋ฐฉ๋ฒ(๋ช ๋ น์ด)๋ค์ด ์ ํ
codebunny99.tistory.com
๋ณ์์ ์์ฑ
- ์ด๋ฆ, ํ์ , ํฌ๊ธฐ, ๊ฐ + ๋ฒ์, ์์กด์๊ฐ, ์ฐ๊ฒฐ
๋ฒ์(scope) : ๋ณ์๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒ์, ๊ฐ์์ฑ
์์กด ์๊ฐ(lifetime) : ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ ์๊ฐ
์ฐ๊ฒฐ(linkage) : ๋ค๋ฅธ ์์ญ์ ์๋ ๋ณ์์์ ์ฐ๊ฒฐ ์ํ
๋ณ์์ ๋ฒ์(scope) : ์ ์ญ๋ณ์์ ์ง์ญ๋ณ์
//---------์ ์ญ๋ณ์์ ๋ฒ์ ์์----------
#include<stdio.h>
int A; //์ ์ญ๋ณ์. ์ด๊ธฐ๊ฐ์ 0
int B; //์ ์ญ๋ณ์. ์ด๊ธฐ๊ฐ์ 0
int add()
{
return A + B;
}
int main()
{
int answer; //์ง์ญ๋ณ์
//---------์ง์ญ๋ณ์์ ๋ฒ์ ์์----------
A = 5;
B = 7;
answer = add();
printf("%d + %d = %d\n", A, B, answer);
//---------์ง์ญ๋ณ์์ ๋ฒ์ ๋----------
//---------์ ์ญ๋ณ์์ ๋ฒ์ ๋----------
return 0;
}
์ ์ญ ๋ณ์ Global Variables
- ์ ์ญ ๋ณ์๋ ํจ์ ์ธ๋ถ์์ ์ ์ธ๋ ๋ณ์๋ก, ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ํจ์์์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค
- ์ ์ญ ๋ณ์์ ๋ฒ์๋ ์์คํ์ผ ์ ์ฒด์ด๋ค.
- ์ ์ญ ๋ณ์๋ ํ๋ก๊ทธ๋จ์ ์ ์ฒด ์๋ช ๋์ ์กด์ฌํ๋ฉฐ, ํน์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ์ฅ๋๋ค
- ๋ณ์๋ ๋ํดํธ๋ก 0์ผ๋ก ์ด๊ธฐํ๋์ด์์ง๋ง, ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๊ธฐํ ์ํค๋ ๊ฒ์ด ์ข๋ค.
์ง์ญ ๋ณ์ Local Variables
- ์ง์ญ ๋ณ์๋ ํจ์๋ ๋ธ๋ก ๋ด์์ ์ ์ธ๋ ๋ณ์๋ก, ์ ์ธ๋ ํจ์๋ ๋ธ๋ก์์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
- ์ง์ญ ๋ณ์๋ ํด๋น ๋ธ๋ก์ด ์คํ๋ ๋ ์์ฑ๋๊ณ , ๋ธ๋ก์ด ์ข ๋ฃ๋๋ฉด ์๋ฉธ๋๋ค.
- C ์ธ์ด์์ ์ง์ญ ๋ณ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๊ฒฐ์ด ์๋ค. ์ฆ, ๋ค๋ฅธ ํ์ผ์ด๋ ๋ค๋ฅธ ๋ธ๋ก์์ ์ ๊ทผํ ์ ์๋ ๊ณ ์ ํ ๋ณ์์ด๋ค.
- ๋ณ์๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ์ฌ์ผ ํ๋ค.
์ง์ญ ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ ์ด์
- ์ง์ญ ๋ณ์๋ ์ ์ธ๋ ํจ์๋ ๋ธ๋ก์ด ์คํ๋ ๋ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๋ค. ์ด ๋, ์ด๊ธฐํ๋์ง ์์ ์ง์ญ ๋ณ์๋ ์ด์ ์ ์ฌ์ฉํ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ(์ฐ๋ ๊ธฐ ๊ฐ)์ ๊ฐ์ง๊ณ ์์ ์ ์๋ค. ์ด ๊ฐ์ ์ฌ์ฉํ๋ฉด ์์์น ๋ชปํ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์๋ค.
- ์ด๊ธฐํ๋ ์ง์ญ ๋ณ์๋ ์์ธก ๊ฐ๋ฅํ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค. ์ด๋ ํ๋ก๊ทธ๋จ์ ๋์์ ์์ธกํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ฃผ๋ฉฐ, ๋ฒ๊ทธ๋ฅผ ์ฐพ๊ณ ์์ ํ๋ ๋ฐ ๋์์ด ๋๋ค.
# ๋งค๊ฐ๋ณ์๋ ์ผ์ข ์ ์ง์ญ๋ณ์์ด๋ค.
- ๋งค๊ฐ๋ณ์์ ์ง์ญ ๋ณ์ ๋ชจ๋ ์คํ ๋ฉ๋ชจ๋ฆฌ(stack memory)์ ์ ์ฅ๋๋ค.
#include <stdio.h>
int inc(int counter);
int main(void)
{
int i;
i = 10;
return 0;
}
void inc(int counter){ //๋งค๊ฐ๋ณ์๋ ์ผ์ข
์ ์ง์ญ๋ณ์
counter++;
}
๋งค๊ฐ๋ณ์์ ํน์ง
- ํจ์ ํธ์ถ ์ ๋งค๊ฐ๋ณ์๊ฐ ์คํ ํ๋ ์์ ํ ๋น๋๊ณ , ํจ์ ์ข ๋ฃ ์ ํด๋น ํ๋ ์์ด ์ ๊ฑฐ๋๋ฉด์ ๋ณ์๋ ์ ๊ฑฐ๋๋ค.
- ๋งค๊ฐ๋ณ์๋ ํจ์ ํธ์ถ ์ ์ ๋ฌ๋ ๊ฐ์ผ๋ก ์ด๊ธฐํ๋ฉ๋๋ค. ํธ์ถ์๊ฐ ์ ๋ฌํ ๊ฐ์ด ๋งค๊ฐ๋ณ์์ ์ด๊ธฐ๊ฐ์ด ๋๋ค.
- ๊ทธ๋ฌ๋ฏ๋ก ํจ์ ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์ ํ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก๋ ํจ์ ๋ด๋ถ์์๋ง ์ฌ์ฉ๋๋ค.
๊ฐ๋ณ ๋งค๊ฐ ๋ณ์
- ๋งค๊ฐ๋ณ์์ ๊ฐ์๊ฐ ๊ฐ๋ณ์ ์ผ๋ก ๋ณํ ์ ์๋ ๊ธฐ๋ฅ
- int sum ( int num, ... ) ๊ณผ ๊ฐ์ด ์ด๋ค.
#include <stdio.h>
#include <stdarg.h> // ๊ฐ๋ณ ๋ณ์๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ์ํฌํธ
int sum (int, ...);
int main(void)
{
int answer = sum(4, 4, 3, 2, 1); // ๋ณ์ ๊ฐ์ ์๊ด x
printf("ํฉ์ %d์
๋๋ค\n", answer);
return(0);
}
int sum( int num, ... ) // ๊ฐ๋ณ ๋ณ์ ์ฒ๋ฆฌ ํจ์
{
int answer = 0;
va_list argptr;
va_start(argptr, num);
for ( ; num > 0 ; num-- )
answer += va_arg( argptr, int );
va_end( argptr );
return( answer );
}
'C Programming Language > C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
C์ธ์ด ์ฌ๊ท์ ์๊ณ ๋ฆฌ์ฆ : ํ๋ ธ์ด ํ ๋ฌธ์ (0) | 2024.06.19 |
---|---|
C์ธ์ด static, register, volatile ์ง์ ์ ๊ฐ๋ (2) | 2024.06.19 |
C์ธ์ด ์ฌ์ฉ์ ์ ์ ํจ์ (0) | 2024.06.19 |
C์ธ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ rand() ํจ์ (0) | 2024.06.18 |
C์ธ์ด Basic ๋ฐ๋ณต๋ฌธ while, for ๊ฐ๋ (0) | 2024.06.18 |