C
์๋ ํฌ์ธํฐ๋ผ๋ ๊ฐ๋
๋ง ์๋ค.
C++
์๋ ๋ ํผ๋ฐ์ค๋ผ๋ ๊ฐ๋
์ด ๋ฑ์ฅํ๋ค.
๋น์ทํ ์ฉ๋ ๊ฐ์ง๋ง ์ด๋ค ์ฐจ์ด์ ์ด ์๋์ง ์๋ผ๋ณด์
ํฌ์ธํฐ ์ฌ์ฉ ์ ์ฃผ์๋ฅผ ์ ๋ฌํ๋ค. ์ ๋ฌ ๋ฐ์ ์ฃผ์๋ฅผ ํตํด ์ฃผ์๊ฐ ๊ฐ๋ฆฌํค๋ ํ ๊ณต๊ฐ์ ๊ฐ์ ๊ฐ์ ์์ ํ๊ฑฐ๋ ์ฝ์ ์ ์๊ฒ ๋๋ค.
๋งค๊ฐ๋ณ์๋ก ํฌ์ธํฐ ๋ณ์๋ฅผ ์ ๋ฌํ ์ ์ด๋ ์ฃผ์๊ฐ์ ๋ณต์ฌ์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ์๋ชจ๊ฐ ์ผ์ด๋๋ค.
๋ํ, ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋์(์ฃผ์) ์์ฒด๋ฅผ ๋ณ๊ฒฝํ ์๋ ์๋ค.(๋๋ธ ํฌ์ธํฐ ์ฌ์ฉํด์ผ ํจ)
๋ํ, ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ฉด Null ํฌ์ธํฐ์ ์ ๊ทผํ๋ ค ํ ๋ Null Pointer Exception
, Segmentation Fault
๋ฑ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.. ์ธ๊ทธํดํธ๊ทนํ......!!!!!
๋ ํผ๋ฐ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฅผ ๋ฐฉ์งํ ์ ์๋ค!
์ฐธ์กฐ์๋ ์์ ์ด ์ฐธ์กฐํ๋ ๋ณ์๋ฅผ ๋์ ํ๋ ๋ ํ๋์ ์ด๋ฆ, ๋ณ๋ช
์ญํ ์ ํ๋ค.
๋ ํผ๋ฐ์ค๋ ํฌ์ธํฐ์ ๋์ผํ ์ญํ ์ ์ํํ์ง๋ง, ์ฐธ์กฐ ๋์ ํ ๋น๊ณผ ์ ๊ทผ ๋ฐฉ์์ ์์ด์ ์ฐจ์ด๊ฐ ์๋ค.
int i = 1;
int *p = &i; // ์ฃผ์๊ฐ ํ ๋น
int &r = i; // ์ง์ ํ ๋น
๋ ํผ๋ฐ์ค๋ ์๋ณธ์ ๋ณ๊ฒฝํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์์ ์์น์ ์ ๊ทผํ ์ ์๋ค.
ํฌ์ธํฐ์ ์์ ํ ๋ฒ์ (?)์ธ ์
์ด๋ค.
์ ์ธ ์ ์ฌ์ฉ๋์๋ค๋ฉด ํฌ์ธํฐ์ ๋ ํผ๋ฐ์ค์ด๋ค.
int *&a; // reference of pointer
int b = 1;
*&b = 2; // *&b == b