C์ธ์ด Chapter 26.
๐ก ๊ตฌ์กฐ์ฒด ๋ด๋ถ์์ ๋น ๋ฉ๋ชจ๋ฆฌ๊ณต๊ฐ์ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ์ฌ์ฉํ์ง ์๋ charํ ๋ฐฐ์ด๋ก ๋ง์๋ฒ๋ฆฌ๋ ํํ
typedef struct EMB
{
int A;
char B;
char pad[3]; // ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ง๋ ๋ณ์
int C;
} emb;
[์ ์์ค์ ๋ฉ๋ชจ๋ฆฌ ํํ]
int A | |
char B | char pad[3] |
int C |
typedef struct EMB
{
int A;
char B;
char pad[3];
int C;
}emb;
int mian( )
{
emb A;
emb B = {0, 0,{1, 2, 3}, 100}
return 0;
}
๐ ์) 5๋ช ์ ํ์์ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ "d9-4.dat" ํ์ผ์ ๊ธฐ๋กํ๋ ํ๋ก๊ทธ๋จ
๐ฏ ํ๋ก๊ทธ๋จ ์ค๋ช
STUDENT st[5];
[๊ตฌ์กฐ์ฒด ๋ฐฐ์ด]
fopen("d9-4.dat", "w");
char *filep = "d9-4.dat";
fopen(filep, "w");
fprintf(stdout, "%d", test[i].test);
[์ ๋ ฅ๋ถ]
๊ฒฐ๊ณผ : d9-4.dat ํ์ผ์ ์ด์ด๋ณด๋ฉด ๋ค์๊ณผ๊ฐ์ด ์ ๋ ฅ๋์ด ์๋ค.
๊ฒฐ๊ณผ
[B1์ main ๋ฌธ์์ ์ ์ธ๋์๋ค.]
[A2์ A4๋ฅผ ์ด๊ธฐํ ํ์ง ์์ ๊ฒฝ์ฐ]
[๋ฉ๋ชจ๋ฆฌ 5์์ญ ๊ตฌ์กฐ]
R | ํจ์ ์์ | Code ↓ |
R/W | ์ ์ญ๋ณ์ Static (์ง์ญ ๋ณ์) |
Data(์ด๊ธฐํ O) |
BSS(์ด๊ธฐํ X) | ||
R/W | heap | |
R/W | ์ง์ญ ๋ณ์ | Stack ↑ |
int static C2;
int static C4 = 2000;
[C2, C4๋ฅผ static์ ๋ถ์ด๊ธฐ ์ ]
[C2, C4 ๋ฅผ static์ ๋ถ์ธ ํ]
๐ ์) static ํ์ฉ
๐ฏ ํ๋ก๊ทธ๋จ ์ค๋ช
๊ฒฐ๊ณผ
[char *string() ํจ์์ ๋ฐฐ์ด ๋ณ์์ static๋ฅผ ๋ถ์]
๊ฒฐ๊ณผ
๐ ์) ๋ถํ ์ปดํ์ผ ์์ ์ ์ญ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ผ๊ฐ์ ์ ์ญ๋ณ์๋ฅผ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค.
[main ๋ณธ๋ฌธ]
int test_num
[test() ํจ์ ํ์ผ]
๊ฒฐ๊ณผ : ํ์ผ๊ฐ์ test_num๊ฐ ๊ณต์
๊ฒฐ๊ณผ
๐ก ๋ถํ ์ปดํ์ผ ์ ๋์ผํ ์ด๋ฆ์ ์ ์ญ๋ณ์๋ฅผ ์ฌ์ฉํ ๋.
extern int inum;
wrarning๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด extern์ ํ์ชผ์ ๋ถ์ฌ์ฃผ๋ฉด int inum์ด ์์ง๋ง ๋ง๋ค์ง ์๊ฒ ํด์ค๋ค.
๐ก static๋ ๋ณด์์ด ํ์ํ ๊ฒฝ์ฐ๋ ์ ์ญ๋ณ์๊ฐ ๊ฒน์น์ง ์๊ฒ ํ๊ธฐ์ํด ์ฃผ๋ก ์ฌ์ฉ๋๋ค.