• ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ๋ ๋ค์๊ณผ ๊ฐ์ด ํ ๋น๋ฐ์ ์ ์๋ค.
• ๋ง์ฝ ๊ตฌ์กฐ์ฒด์ ๋ฐฐ์ด์ด ํ์ํ๋ฉด ๊ตฌ์กฐ์ฒด์ ํฌ๊ธฐ์๋ค ํ์ํ ๊ฐ์๋ฅผ ๊ณฑํด์ฃผ๋ฉด ๋๋ค.
• ์๋์ ํ๋ก๊ทธ๋จ์์๋ ์ฑ ์ ํํํ๋ ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ํ๊ณ ๊ตฌ์กฐ์ฒด์ ๋ฐฐ์ด์ ๋์ ์ผ๋ก ์์ฑํ๋ค.
struct Book {
int number;
char title[100];
};
struct Book *p;
p = (struct Book *)malloc(2 * sizeof(struct Book));
๋์ ์ผ๋ก ์์ฑ๋ ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด์ ํฌ์ธํฐ๋ฅผ ํตํด์๋ง ์ ๊ทผํ ์ ์๋ ์ ์ ์ ์ํ์.
p[0]๋ ์ฒซ ๋ฒ์งธ ๊ตฌ์กฐ์ฒด์ด๊ณ p[1]์ ๋ ๋ฒ์งธ ๊ตฌ์กฐ์ฒด์ด๋ค.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Book {
int number;
char title[100];
};
int main(void)
{
struct Book *p;
p = (struct Book *)malloc(2 * sizeof(struct Book));
if (p == NULL) {
printf("๋ฉ๋ชจ๋ฆฌ ํ ๋น ์ค๋ฅ\n");
exit(1);
}
p[0].number = 1; // (*p).number = 1
strcpy(p[0].title, "C Programming");
p[1].number = 2; // (*p+1).number = 2
strcpy(p[1].title, "Data Structure");
free(p);
return 0;
}
ํ๋ก๊ทธ๋จ ์ค๋ช
line 5 - 8: ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ํ๋ค. ๊ตฌ์กฐ์ฒด์ ๋ฉค๋ฒ๋ ์ ์ํ ๋ณ์ number์ ๋ฌธ์ ํ ๋ฐฐ์ด name[]์ด๋ค.
line 12: ๊ตฌ์กฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋ ํฌ์ธํฐ ๋ณ์๋ฅผ ์ ์ธํ๋ค.
line 14: malloc()์ ์ด์ฉํ์ฌ ๊ตฌ์กฐ์ฒด 2๊ฐ ๋ถ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ํ ๋น๋ฐ๋๋ค. ์ด ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์์ ์ฃผ์๋ฅผ p์ ๋์ ํ๋ค.
line 16: malloc()์ด ๋ฐํํ ๊ฐ์ด NULL์ธ์ง๋ฅผ ๊ฒ์ฌํ๋ค. NULL์ด๋ฉด ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์ค๋ฅ์ด๋ฏ๋ก ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ณ exit()๋ฅผ ํธ์ถํ์ฌ ์ข ๋ฃํ๋ค.
line 21 - 22: ๋์ ์ผ๋ก ํ ๋น๋ฐ์ ์ฒซ ๋ฒ์งธ ๊ตฌ์กฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ๋์ ํ๋ค.
line 24 - 25: ๋์ ์ผ๋ก ํ ๋น๋ฐ์ ๋ ๋ฒ์งธ ๊ตฌ์กฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ๋์ ํ๋ค.
line 27: ๋์ ์ผ๋ก ํ ๋น๋ฐ์ ๊ณต๊ฐ์ ์ฌ์ฉ์ด ๋๋๋ฉด ํญ์ ์์คํ ์ ๋ฐ๋ฉํ์ฌ์ผ ํ๋ค. free()๋ฅผ ํธ์ถํ์ฌ malloc()์ด ํ ๋นํ ๊ณต๊ฐ์ ๋ฐ๋ฉํ๋ค,
'1ํ๋ (2023) > C ์ธ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C] Study : ์์๊ณผ ์ฐ์ฐ์ - (2) ์ฐ์ ์ฐ์ฐ์ (0) | 2023.08.21 |
---|---|
[C] Study : ์์๊ณผ ์ฐ์ฐ์ - (1) ์์๊ณผ ์ฐ์ฐ์์ ๊ฐ๋ (0) | 2023.08.21 |
[C] Study: ๋์ ๋ฉ๋ชจ๋ฆฌ - (2) malloc()๊ณผ free() (0) | 2023.08.19 |
[C] Study: ๋์ ๋ฉ๋ชจ๋ฆฌ - (1) ๋์ ํ ๋น ๋ฉ๋ชจ๋ฆฌ๋? (0) | 2023.08.19 |
[C] Study: ๋ณ์์ ์๋ฃํ - (5) ๋ฌธ์ํ (0) | 2023.08.18 |