12. [C / C++] ํฌ์ธํฐ์ ๋ ํผ๋ฐ์ค์ ์ฐจ์ด
1. ํฌ์ธํฐ (pointer)
ํฌ์ธํฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ณ์์ด๋ค.
์ฃผ์ ๊ฐ์ ํตํ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ํ๋ค. (๊ฐ์ ์ฐธ์กฐ)
2. ๋ ํผ๋ฐ์ค (reference)
๋ ํผ๋ฐ์ค = ์ฐธ์กฐ์. ( C++ ๋ฌธ๋ฒ )
์ฐธ์กฐ์๋ ์์ ์ด ์ฐธ์กฐํ๋ ๋ณ์๋ฅผ ๋์ ํ ์ ์๋ ๋ ํ๋์ ์ด๋ฆ์ด๋ค.
์ฆ, ๋ณ์์ ๋ณ๋ช (๋ณ์นญ)์ ํ๋ ๋ถ์ฌ์ฃผ๋ ๊ฒ์ด๋ค.
๋ณ์ ๋ช ์ ํตํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ค. ( ์ง์ ์ฐธ์กฐ )
iNum์ด ๋ณ์์ ์ด๋ฆ์ด๋ฉด, rRef๋ iNum1์ ๋ณ๋ช (๋ณ์นญ)์ด๋ผ๋ ๋ป์ด๋ค.
iNum๊ณผ rRef๋ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐธ์กฐํ๋ค.
3. ํฌ์ธํฐ์ ๋ ํผ๋ฐ์ค์ ์ฐจ์ด
1. NULL ์ด๊ธฐํ
ํฌ์ธํฐ๋ NULL ์ด๊ธฐํ๋ฅผ ํ ์ ์์ง๋ง, ๋ ํผ๋ฐ์ค๋ NULL ์ด๊ธฐํ๋ฅผ ํ ์ ์๋ค.
๋ ํผ๋ฐ์ค๋ ๋ฐ๋์ ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ๋ฅผ ํด์ผํ๋ค.
์ด๋ฌํ ํน์ฑ ๋๋ฌธ์, ํฌ์ธํฐ๋ ๊ฐ๋ฆฌํฌ ๋์์ ๋ณ๊ฒฝํ ์ ์์ง๋ง, ๋ ํผ๋ฐ์ค๋ ๋ถ๊ฐ๋ฅํ๋ค.
2. ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์๋ชจ
ํฌ์ธํฐ๋ ์ฃผ์ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํด ๋ณ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์๋ชจํ๋ค.
๋ฐ๋ฉด, ๋ ํผ๋ฐ์ค๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐธ์กฐํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์๋ชจํ์ง ์๋๋ค.
3. call by pointer / call by reference
call by pointer
๋งค๊ฐ ๋ณ์๋ก ํจ์ ์ธ์ ์ ๋ฌ ์,
๋ฉ๋ชจ๋ฆฌ ์๋ชจ๊ฐ ์ผ์ด๋๊ณ , ๊ฐ ๋ณต์ฌ๊ฐ ๋ฐ์๋๋ค.
call by reference
๋ฉ๋ชจ๋ฆฌ ์๋ชจ๊ฐ ์๊ณ , ๊ฐ ๋ณต์ฌ ๋ํ ๋ฐ์ํ์ง ์๋๋ค.