typedef์ ๊ตฌ์กฐ์ฒด
typedef : ํ์ ์ด๋ฆ์ ์ฌ์ฉ์๊ฐ ์ ํด์ค๋ค
์ด๋ค ๊ฒฝ์ฐ๋ ์ด๋ฆ์ด ๊ธธ์ด์ง๋ฉด ์์๋ณด๊ธฐ ํ๋ค๊ธฐ ๋ง๋ จ์ด๋ค.
๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋๋ ๋ง์ฐฌ๊ฐ์ง๋ค.
๊ตฌ์กฐ์ฒด ํ์ ์ ์๋ ค์ฃผ๊ณ ์ด๋ฆ์ ์ง์ด์ฃผ์ด ์ฌ์ฉํด์ผ ํ๋ค. ์ด๋ ์์ฝ๋ฉ ์ค๋ ์๋ค์ธ ๊ฐ๋ฐ์๋ค ๋์ ์ฉ ์ข์ง ์์๋๋ณด๋ค.
๊ทธ๋์ ๊ตฌ์กฐ์ฒด์ ์ ์์ ์ฌ์ฉ์ ์ฝ๊ฒ ํด๋ณด๋ ค๊ณ ๋์ ํ ๊ฒ์ด typedef์ด๋ค.
์ฌ์ฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ๋ค์ด ์๋ค.
struct point {
int xpos;
int ypos;
};
typedef struct point Point
Point p;
์์ฒ๋ผ ์์ฑํ๋ค๋ฉด ๋ณ์ ์ ์ธ์ด ์งง์์ง๋ค๋ ์ฅ์ ์ด ์๋ค.
typedef struct point {
int xpos;
int ypos;
} Point;
Point p;
๋ ์ฝ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฒ์ด ๊ตฌ์กฐ์ฒด ์ ์ ๋งจ ๋ค์ ๋ณ์นญ์ ๋๋ ๊ฒ์ด๊ณ ,
typedef struct {
int xpos;
int ypos;
} Point;
Point p;
์ด๋ ๊ฒ ์์ ์๋ตํด๋ฒ๋ฆด ์๋ ์๋ค.
๊ณต์ฉ์ฒด, Union ํ์
๊ตณ์ด struct ๋์ union์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ?
์ด์ ๋ํด ๋ค๋ฅธ ๊ธ๋ค์ ์ฐพ์๋ณด๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ณต์ ๋๋ค๋ ์ด์ ์ด ์์ด์์๋ค. (๊ทธ๋์ ๊ณต์ฉ์ฒด๋ผ ๋ถ๋ฅด๋ ๋ฏ ์ถ๋ค.)
๊ณต์ฉ์ฒด์ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
๊ณต์ฉ์ฒด๋ ํ ๋ฒ์ ํ ๋ฉค๋ฒ๋ง ์จ์ผํ๋ค.
๋ณ์์ ํฌ๊ธฐ๋ ๊ฐ์ฅ ๊ธด ๋ฉค๋ฒ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ณดํ๋ค.
๊ณต์ฉ์ฒด๋ ๋ชจ๋ ๋ฉค๋ฒ์ ์์ ์ฃผ์๊ฐ ๊ณต์ฉ์ฒด์ ์์ ์ฃผ์ ๊ฐ๊ณผ ๋์ผํ๋ค.
๋งจ ๋ง์ง๋ง ํน์ง ๋๋ฌธ์ ๊ณต์ฉ์ฒด๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ ์ ์๋ค.
์๋ฅผ ๋ค์ด int ํ ์ ์๋ฅผ ํ๋ ๋ฐ๋๋ค ํ์.
์ด๋ ์์ 2๋ฐ์ดํธ, ํ์ 2๋ฐ์ดํธ๋ฅผ ์ถ๋ ฅํ๊ณ ์์ 1๋ฐ์ดํธ, ํ์ 1๋ฐ์ดํธ์ ์์คํค ๋ฌธ์๋ฅผ ์ถ๋ ฅํด์ผ ํ๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ณต์ฉ์ฒด๋ฅผ ํด๊ฒฐ์ฑ ์ผ๋ก ์ ์ํ ์ ์๋ค.
typedef struct dbshort
{
unsigned short upper;
unsigned short lower;
} DBShort;
typedef union rdbuf {
int iBuf;
char bBuf[4];
DBShort sBuf;
} RDBuf;
๊ณต์ฉ์ฒด์ ํน์ง์ผ๋ก ์ธํด ๊ฐ์ฅ ๊ธด ๋ฉค๋ฒ์ธ iBuf๊ฐ ๋ณ์์ ํฌ๊ธฐ๊ฐ ๋๊ฒ ๋ค.
์ด ๋ฉค๋ฒ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๊ณต์ ๋๋ค.
- dBuf : 1byte์ฉ ๋๋์ด ๊ฐ์ง๋ค.
- DBShort ๊ตฌ์กฐ์ฒด : ๊ฐ ๋ฉค๋ฒ๊ฐ 2byte์ฉ ๊ฐ์ง
enum ์ด๊ฑฐํ ํ์
enum : ์ฐ๊ด๋ ์ ์ ์์๋ฅผ ๋ชจ์์ ์ ์
enum syllable { Do=1, Re=2, Mi=3, Fa=4, So=5, La=6, Ti=7};
enum weekdays { Mon, Tue, Wed, Thu, Fri}; // 0๋ถํฐ ์ ์๊ฐ ์๋์ผ๋ก ๋ฐฐ์ ๋จ
enum color { RED=3, BLUE, WHITE=6, BLACK };
typedef enum { Sat, Sun} Weekends;
enum { ORANGE, BANANA };
์ฌ๊ธฐ์ ๊ธฐ์ตํด ๋ ๋งํ ๊ฒ์ enum์์ ์๊ฐ ์๋์ผ๋ก ์ธ๋ฑ์ฑ ๋๋ค๋ ๊ฒ.
์์ weekdays์์ Mon~Fri๊ฐ ์ฐจ๋ก๋๋ก 0~4๊น์ง ๋ฐฐ์ ๋๋ค.
๋ํ RED=3์ธ ๊ฒฝ์ฐ BLUE๋ ๊ทธ๋ณด๋ค 1์ ๋ํ 4๊ฐ๋๊ณ , WHITE=6์ด๋ฏ๋ก BLACK์ ๊ทธ๋ณด๋ค 1์ ๋ํ 7์ด ๋๋ค.
typedef๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, enum์ด๋ฆ์ ์๋ตํด๋ ๋๋ฉฐ, ์์ ์ ์ธ์ ํ ๋๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.
'๐ซ Language > C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C/C++] malloc๊ณผ Stack๊ณผ Heap์ ๊ด๊ณ (1) | 2023.06.18 |
---|---|
[C/C++] ํฌ์ธํฐ ๋ฐฐ์ด ๊ทธ๋ฆฌ๊ณ ๋ฐฐ์ด ํฌ์ธํฐ (0) | 2023.06.18 |
[C/C++] ์๋ ํ ๋น ๋ฌธ์์ด๊ณผ ํฌ์ธํฐ (0) | 2023.06.18 |