1. ํฌ์ธํฐ ๊ฐ๋
- ํฌ์ธํฐ ๋ณ์๋ ํน์ดํ ๋ณ์๋ก ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅํ๊ณ ์๋ค.
- ํน์ ํ ๋ณ์ ์์ฒด๊ฐ ์กด์ฌํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๊ฐ์ ๊ฐ์ง๋ค.
2. ํฌ์ธํฐ ๊ด๋ จ ์ฐ์ฐ์
A. ์ฃผ์ ์ฐ์ฐ์(&) : ๋ณ์ ์์ ๋ถ์ด ๋ณ์์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฃผ์ ๊ฐ์ ๊ตฌํ๋ค
B. ํฌ์ธํฐ (*) : ํฌ์ธํฐ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๋ค.
C. ๊ฐ์ ์ฐธ์กฐ ์ฐ์ฐ์ (*) : ์ ์ธ๋ ํฌ์ธํฐ ๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ ๋ณ์๋ฅผ ๊ตฌํ๋ค.
int a = 5
int *b = &a
์์ ๋ ๋ ๋ค ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ธ๋ ๋ค์ *b ๋ผ๊ณ ์ธ ๊ฒฝ์ฐ ๊ฐ์ ์ฐธ์กฐ ์ฐ์ฐ์์ด๋ฏ๋ก 5๊ฐ ๋์ค๊ฒ ๋๋ค. b๋ผ๊ณ ์ฐ๋ฉด ์ฃผ์๊ฐ์ด ๋์ค๊ฒ ๋๋ค.
#include <stdio.h>
int main(void) {
int a = 5;
int *b = &a;
printf("%d\n",*b);
return 0;
}
//์ถ๋ ฅ = 5
์ค์ ๋ฉ๋ชจ๋ฆฌ์ ๊ตฌ์กฐ๋ intํ์ 4bytes๋ฅผ ์ฐจ์งํ๋ฏ๋ก ์ด๋ค ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์ 4bytes๋ฅผ ์ฐจ์งํ๊ณ ์๋ ํํ๋ก ์กด์ฌํ๊ณ ์๋ ๊ฒ์ด๋ค.
3. ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ํ์ธ
- ์ฐ์์ ์ธ ๋ฐฐ์ด์ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ฐ์์ ์ผ๋ก ๋ฐฐ์นํ ์ ์๋ค.
- ๋ฌธ์์ด ๋ํ ๋ฐฐ์ด๋ก ์ธ์ํ๋ค.
- ๋ฐฐ์ด ์ ์ธ ๋ฐฉ๋ฒ: ์ํ๋ ์๋ฃํ ๋ฐฐ์ด์ด๋ฆ [๋ฐฐ์ด์ ํฌ๊ธฐ] = { ๋ฐฐ์ด์ ์์ }
์ฌ๊ธฐ์ ๋ฐฐ์ด์ ์์๋ ๊ผญ ํ์ํ์ง ์๋ค. ๊ทธ๋ฆฌ๊ณ { 0, } ํ ์์ ๋ค 0์ผ๋ก ์ฑ์์ง๋ค. ๊ทธ๋ฅ int test[20]; ์ด๋ ๊ฒ ํด๋ ๋๋ค.
#include <stdio.h>
int main(void) {
int a[] = { 1,2,3,4,5,6,7,8,9,10};
int i;
for (i = 0; i< 10; i ++) {
printf("%d\n",&a[i]);
}
}
///์ถ๋ ฅ
1876177008
1876177012
1876177016
1876177020
1876177024
1876177028
1876177032
1876177036
1876177040
1876177044
///
์ฐ์๋ 4๋ฐ์ดํธ ๋์ด์ง ์ซ์๊ฐ ๋์จ ๊ฒ์ ํ์ธํ ์ ์๋ค. = 40 ๋ฐ์ดํธ ์ฐจ์งํจ
์ ์์ฌํญ
ํฌ์ธํฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฏ๋ก ์์ง ๋ชปํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ฐ๋ก ์ ๊ทผํด์ ์์ ํน์ ์ญ์ ๋ฅผ ์์์ ์ผ๋ก ํ์ง ์๋๋ก ์ฃผ์ํด์ผํ๋ค.
1. ํฌ์ธํฐ ๊ฐ๋
- ํฌ์ธํฐ ๋ณ์๋ ํน์ดํ ๋ณ์๋ก ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅํ๊ณ ์๋ค.
- ํน์ ํ ๋ณ์ ์์ฒด๊ฐ ์กด์ฌํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๊ฐ์ ๊ฐ์ง๋ค.
2. ํฌ์ธํฐ ๊ด๋ จ ์ฐ์ฐ์
A. ์ฃผ์ ์ฐ์ฐ์(&) : ๋ณ์ ์์ ๋ถ์ด ๋ณ์์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฃผ์ ๊ฐ์ ๊ตฌํ๋ค
B. ํฌ์ธํฐ (*) : ํฌ์ธํฐ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๋ค.
C. ๊ฐ์ ์ฐธ์กฐ ์ฐ์ฐ์ (*) : ์ ์ธ๋ ํฌ์ธํฐ ๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ ๋ณ์๋ฅผ ๊ตฌํ๋ค.
int a = 5
int *b = &a
์์ ๋ ๋ ๋ค ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ธ๋ ๋ค์ *b ๋ผ๊ณ ์ธ ๊ฒฝ์ฐ ๊ฐ์ ์ฐธ์กฐ ์ฐ์ฐ์์ด๋ฏ๋ก 5๊ฐ ๋์ค๊ฒ ๋๋ค. b๋ผ๊ณ ์ฐ๋ฉด ์ฃผ์๊ฐ์ด ๋์ค๊ฒ ๋๋ค.
#include <stdio.h>
int main(void) {
int a = 5;
int *b = &a;
printf("%d\n",*b);
return 0;
}
//์ถ๋ ฅ = 5
์ค์ ๋ฉ๋ชจ๋ฆฌ์ ๊ตฌ์กฐ๋ intํ์ 4bytes๋ฅผ ์ฐจ์งํ๋ฏ๋ก ์ด๋ค ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์ 4bytes๋ฅผ ์ฐจ์งํ๊ณ ์๋ ํํ๋ก ์กด์ฌํ๊ณ ์๋ ๊ฒ์ด๋ค.
3. ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ํ์ธ
- ์ฐ์์ ์ธ ๋ฐฐ์ด์ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ฐ์์ ์ผ๋ก ๋ฐฐ์นํ ์ ์๋ค.
- ๋ฌธ์์ด ๋ํ ๋ฐฐ์ด๋ก ์ธ์ํ๋ค.
- ๋ฐฐ์ด ์ ์ธ ๋ฐฉ๋ฒ: ์ํ๋ ์๋ฃํ ๋ฐฐ์ด์ด๋ฆ [๋ฐฐ์ด์ ํฌ๊ธฐ] = { ๋ฐฐ์ด์ ์์ }
์ฌ๊ธฐ์ ๋ฐฐ์ด์ ์์๋ ๊ผญ ํ์ํ์ง ์๋ค. ๊ทธ๋ฆฌ๊ณ { 0, } ํ ์์ ๋ค 0์ผ๋ก ์ฑ์์ง๋ค. ๊ทธ๋ฅ int test[20]; ์ด๋ ๊ฒ ํด๋ ๋๋ค.
#include <stdio.h>
int main(void) {
int a[] = { 1,2,3,4,5,6,7,8,9,10};
int i;
for (i = 0; i< 10; i ++) {
printf("%d\n",&a[i]);
}
}
///์ถ๋ ฅ
1876177008
1876177012
1876177016
1876177020
1876177024
1876177028
1876177032
1876177036
1876177040
1876177044
///
์ฐ์๋ 4๋ฐ์ดํธ ๋์ด์ง ์ซ์๊ฐ ๋์จ ๊ฒ์ ํ์ธํ ์ ์๋ค. = 40 ๋ฐ์ดํธ ์ฐจ์งํจ
์ ์์ฌํญ
ํฌ์ธํฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฏ๋ก ์์ง ๋ชปํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ฐ๋ก ์ ๊ทผํด์ ์์ ํน์ ์ญ์ ๋ฅผ ์์์ ์ผ๋ก ํ์ง ์๋๋ก ์ฃผ์ํด์ผํ๋ค.