ํฐ์คํ ๋ฆฌ ๋ทฐ
โถ ๋ฐฐ์ด์ ์ฌ์ค "ํฌ์ธํฐ์์"์๋ค!!!
int * ptr
, char * ptr
๋ฑ์ผ๋ก ์ ์ธํ ๊ฒ์ ํฌ์ธํฐ ๋ณ์์ด๋ค.
์ด๊ธฐํ ํ ๋ณ์์ ์ฃผ์ ๊ฐ์ ์ ์ฅํ์ง๋ง ์ํ๋ค๋ฉด ๋ค๋ฅธ ์ฃผ์ ๊ฐ๋ ์ถฉ๋ถํ ๋์
ํ ์ ์๋ค.
ํ์ง๋ง ๋ฐฐ์ด์ ๋ค๋ฅธ ์ฃผ์๊ฐ์ ๋์
ํ ์ ์๋ค. ์ฆ, ๋ฐฐ์ด์ ํ ์ฃผ์๊ฐ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ์์!!
๋ํ ํฌ์ธํฐ์ ์๋ฃํ์ด char
, int
, double
๋ฑ์ผ๋ก ์ ์ธ ๋๋ฉด ๊ฐ๊ฐ sizeof(type)
์ ๊ฐ๊ฒฉ์ผ๋ก ๋ง์
๋บ์
ํฌ์ธํฐ ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ฏ์ด ๋ฐฐ์ด ๋ค์ ๋ถ๋ [0], [1], [2] ..
์ ๊ฐ๊ฒฉ๋ ๋ง์ฐฌ๊ฐ์ง๋ก sizeof(type)
๋งํผ์ ๊ฐ๊ฒฉ์ผ๋ก ์ค์ ๋๋ค.
โถ ๋ฌธ์์ด์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
char str_arr[] = "RACCOON";
char * str_ptr = "RACCOON";
๋ฐฐ์ด๋ก ์ ์ธํ ๋ฌธ์์ด์ ๊ฒฝ์ฐ, ๋ฐฐ์ด ์์ ํ ๊ธ์ ํ ๊ธ์ ๋ด๊ธฐ๊ธฐ ๋๋ฌธ์
์์ ์ ํ ๋์๋ ๊ฐ ๋ฌธ์ ๋ณ๋ก ์์ ์ด ๊ฐ๋ฅํ๋ค.
์ง๊ธ ์ ์ฅ๋์ด ์๋ ์ํ๊ฐ
str_arr, str_arr[0] -> 'R' ์ ์ฃผ์ ๊ฐ
str_arr[1] -> 'A' ์ ์ฃผ์ ๊ฐ
// (charํ ๋ฐฐ์ด์ด๋ฏ๋ก str_arr[0]๊ณผ str_arr[1]์ ์ฃผ์ ๊ฐ์ 1๋ฐ์ดํธ ์ฐจ์ด)
str_arr[2] -> 'C' ์ ์ฃผ์ ๊ฐ
// ...
์ด๋ฌํ ํํ์ด๋ฏ๋ก ๊ฐ๊ฐ์ ๋ฐฐ์ด์ธ๋ฑ์ค์ ๋ค๋ฅธ ๋ฌธ์๋ฅผ ๋์ ํ ์ ์๋ค.
str_arr[1] = 'I';
printf("%s", str_arr);
// ์ถ๋ ฅ๊ฒฐ๊ณผ : RICCOON
ํ์ง๋ง ํฌ์ธํฐ๋ก ์ ์ธํ ๋ฌธ์์ด์ ๊ฒฝ์ฐ,
๋จผ์ ๋ฌธ์์ด์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ์ด ๋ ํ ๊ทธ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์ ๊ฐ์ ๋ฐํํ๋ค.
str_ptr[1] = 'I ;
๋ฐ๋ผ์ ์ด๋ ๊ฒ ๋ฐ๊ฟ์ ์๋ค!!!!โ
โถ ๋ฌธ์์ด์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ2 :: char * arr
VS char * arr[]
char *str_ptr = "Hello";
char str_arr[] = "Hello";
์ด ๊ฒฝ์ฐ์
str_ptr
์ " Hello\0 "
์ด ์ญ ์ฐ๊ฒฐ๋ "์์ํํ์ ๋ฌธ์์ด"์ ์ฒซ๋จธ๋ฆฌ ์ฃผ์๊ฐ์ ๊ฐ๋ฆฌํค๋ "ํฌ์ธํฐ ๋ณ์"์ด๊ณ ,
str_arr
์ 'H','e','l','l','o','\0'
์ด๋ผ๋ "๋ณ์ํํ์ ๋ฌธ์์ด"์ ์ฒซ๋จธ๋ฆฌ ์ฃผ์๊ฐ์ ๊ฐ๋ฆฌํค๋ "ํฌ์ธํฐ ์์"์ด๋ค!!!
๋ํ,
char * arr
๊ณผ char arr[]
์ด๋ผ๋ ํ๊ธฐ๋ ํจ์์ ๋งค๊ฐ๋ณ์๋ก์จ๋ ์์ ํ ๊ฐ์ ์๋ฏธ๋ฅผ ๊ฐ๋๋ค.
void Func ( char * arr )
void Func ( char arr[] )
์ ๋์ ์์ ํ ๊ฐ์ ์ ์ธ!!!!!
๋๋ค charํ ๋ฐฐ์ด์ ์ฃผ์๊ฐ์ ์ธ์๋ก ์ ๋ฌ๋ฐ๋๋ฐ,
ํ์ง๋ง ์ด๋ ๊ฒ ์์ ํ ๊ฐ์ ์๋ฏธ๋ฅผ ๊ฐ๋๊ฒ์ ์ค์ง!! ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฐ์ผ๋๋ง!!!
ํจ์๋ด์์๋ ์ ๋ char arr[]
์ด char *arr
์ ๋์ ํ ์ ์๋ค.
โถ ํฌ์ธํฐ ๋ณ์์ ์ด๊ธฐํ (NULL
)
ํฌ์ธํฐ๋ฅผ ์ ์ธํ ํ์ ์ด๊ธฐํ ํ์ง ์์ผ๋ฉด ๊ทธ ์์ ์ฐ๋ ๊ธฐ๊ฐ์ด ์ ์ฅ๋๋ค.
์ด๊ธฐํํ์ง ์๊ณ ํฌ์ธํฐ ๋ณ์๋ ํฌ์ธํฐ ๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ ๋ถ๋ฌ์ฌ ๊ฒฝ์ฐ
ํ๋ก๊ทธ๋จ์ด ์ค๋ฅ๋ฅผ ์ผ์ผํจ๋ค. ๋ฐ๋ผ์ ์ฒ์์ ์ ์ธ๊ณผ ํจ๊ป NULL๋ก ์ด๊ธฐํ ํ๋ ๊ฒ์ด ์ข๋ค.
NULL์ 0 ์ ์๋ฏธํ๋๋ฐ, ์ด๊ฒ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ 0๋ฒ์ง๋ผ๋ ์๋ฏธ๊ฐ ์๋๋ผ “์๋ฌด ์ฃผ์๊ฐ๋ ์ ์ฅ๋์ด ์์ง ์๋ค.”๋ผ๋ ์๋ฏธ์ด๋ค.
โถ ๋ฐฐ์ด์ ๊ธธ์ด์ ๋ณด
ํจ์์ ์ธ์๊ฐ์ผ๋ก ๋ฐฐ์ด์ ์ฃผ์๊ฐ์ ์ ๋ฌํ ๋์๋ ๋ฐฐ์ด์ ๊ธธ์ด์ ๋ณด๋ ํจ๊ป ์ ๋ฌํด์ฃผ์ด์ผํ ๋๊ฐ ์๋ค.
์ด๋ฏธ ์ธ์๊ฐ์ผ๋ก ๋๊ฒจ์ฃผ๊ณ ๋ ๋ค์ ๋งค๊ฐ๋ณ์๋ฅผ ์ด์ฉํ์ฌ sizeof
์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋ฉด ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ๋๊ฒ ์๋๋ผ, ๋ฐฐ์ด์ ์ฃผ์๊ฐ์ ๋ด์ ํฌ์ธํฐ ๋ณ์์ ํฌ๊ธฐ๊ฐ ์ถ์ถ๋๊ธฐ ๋๋ฌธ!!
(ํฌ์ธํฐ ๋ณ์๋ ์๋ฃํ์ ๊ด๊ณ์์ด ๋ฌด์กฐ๊ฑด ์ฃผ์๊ฐ์ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ 32bit์์คํ ์์๋ 4๋ฐ์ดํธ, 64bit์์๋ 8๋ฐ์ดํธ์ด๋ค.)
์ด๋, ๋ฐฐ์ด์ ๊ธธ์ด์ ๋ณด๋ sizeof(๋ฐฐ์ด์ด๋ฆ)/sizeof(์๋ฃํ)
๋ก ๊ตฌํ๋ค.
int arr[3];
int arr_num;
arr_num = sizeof(arr)/sizeof(int);
'๊ณต๋ถ > C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C์ธ์ด] ์ ๋์ฝ๋ ์ ๋ ฅ๋ฐ๊ธฐ (ํ๊ธ๋ง ์ ๋ ฅ๋ฐ๋ ํจ์) (2) | 2013.04.20 |
---|---|
ํฌ์ธํฐ ๊ณต๋ถ 2 - ์์ (0) | 2013.04.16 |
์ ์์ ์๋ฆฟ์ ๊ตฌํ๊ธฐ (0) | 2013.04.09 |
์ฝ์ ์ปค์ ์ ์ด ํจ์๋ค (0) | 2013.04.09 |
2์ง์ โ 10์ง์ ๋ณํ (0) | 2013.03.29 |
- eslint
- string
- ๋ถํธ์บ ํ
- stackoverflow
- ๋ฐ๋๋ผ์ฝ๋ฉ ํ๊ธฐ
- array
- css
- ์์ฑ์ํจ์
- review
- eventlistener
- ์ฝ๋ฉ๋ถํธ์บ ํ
- DOM
- KEYBOARD
- book
- HTML
- js
- Stash
- GIT
- ๋ฐ๋๋ผ์ฝ๋ฉ
- VSC
- Total
- Today
- Yesterday