๐Ÿ’ป Information/Computer

[C++] ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ, ์ฃผ์†Œ์— ์˜ํ•œ ์ „๋‹ฌ, ํฌ์ธํ„ฐ์— ์˜ํ•œ ์ „๋‹ฌ

GigaWatt 2015. 5. 4. 19:38
๋ฐ˜์‘ํ˜•

๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์œ„์น˜๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด 0๋ฒˆ์ง€๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์ผ๋ จ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™์—ฌ์ ธ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์„ ์ฃผ์†Œ(์–ด๋“œ๋ ˆ์Šค)๋ผ๊ณ  ํ•œ๋‹ค.
์ฃผ์†Œ๋Š” ์ •์ˆ˜ ํ˜•ํƒœ์ด๋ฉฐ ๋‹จ์œ„๋Š” ๋ฐ”์ดํŠธ์ด๋‹ค. ์ปดํ“จํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ(๋žจ)์œผ๋กœ ์˜ฎ๊ฒจ์•ผํ•œ๋‹ค.

ํฌ์ธํ„ฐ๋ž€?

์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฒˆ์ง€(address)๋กœ, ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋””์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ์•Œ๋ ค์ค€๋‹ค. C++์—์„œ๋Š” ์ด ํฌ์ธํ„ฐ(๋ณ€์ˆ˜์˜ ์ฃผ์†Œ)๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํฌ์ธํ„ฐ ์—ฐ์‚ฐ์ž(&)๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

& (์ฃผ์†Œ)
* (๊ฐ’)

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜?

์ฃผ์†Œ๋งŒ์„ ์ €์žฅํ•œ๋‹ค. ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋Š” ์„ ์–ธํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ * ๊ธฐํ˜ธ๋ฅผ ๋ง๋ถ™์—ฌ์•ผ ํ•œ๋‹ค. ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ๋‹จ๋…์ ์œผ๋กœ p๋ผ๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํฌ์ธํ„ฐ๊ฐ’(์ฃผ์†Œ)๋ฅผ ์˜๋ฏธํ•˜์ง€๋งŒ, ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์— *๋ฅผ ๋ง๋ถ™์ธ *p๋Š” ๋” ์ด์ƒ ์ฃผ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ ํ•ด๋‹น ์ฃผ์†Œ์— ์ €์žฅ๋œ ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค.
๊ทธ๋ž˜์„œ p์—๋Š” ๋ณ€์ˆ˜ a์˜ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ *p๋Š” ๋ณ€์ˆ˜ a์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๋Œ€์ž… ์—ฐ์‚ฐ์ž๋กœ ๊ฐ’์„ ๋Œ€์ž…ํ•  ๊ฒฝ์šฐ ๋Œ€์ž… ์—ฐ์‚ฐ์ž ์˜ค๋ฅธ์ชฝ๊ณผ ์™ผ์ชฝ์— ์˜ค๋Š” ์ž๋ฃŒํ˜•์ด ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ• 3๊ฐ€์ง€

1. ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ ๋ฐฉ์‹ (Call by Value)

2. ์ฃผ์†Œ์— ์˜ํ•œ ์ „๋‹ฌ ๋ฐฉ์‹ (Call by Address)

3. ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ ๋ฐฉ์‹ (Call by Reference)

1. ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ ๋ฐฉ์‹ (Call by Value)

ํ˜ธ์ถœ ์ธก์˜ ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ์ธก์œผ๋กœ ๊ฐ’๋งŒ ์ „๋‹ฌํ•œ๋‹ค.
ํ•จ์ˆ˜ ์ธก์—์„œ๋Š” ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ณ„๋„๋กœ ๊ธฐ์–ต๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›๊ณ  ๊ทธ ๊ณณ์— ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ €์žฅ๋˜์—ˆ๋˜ ๊ฐ’๋งŒ ์ „๋‹ฌ๋ฐ›์•„ ๋ณต์‚ฌ
์ด ๋ฐฉ์‹์€ ๋ณ„๊ฐœ์˜ ๊ธฐ์–ต๊ณต๊ฐ„์ด ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด return๊ฐ’์„ ์ด์šฉํ•˜์„ธ์š”.

2. ์ฃผ์†Œ์— ์˜ํ•œ ์ „๋‹ฌ ๋ฐฉ์‹ (Call by Address)

์‹ค ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’์„ ๋„˜๊ฒจ์ฃผ๊ณ , ํ˜•์‹ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ด๋ฅผ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋„๋ก ํ•œ๋‹ค.

3. ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ ๋ฐฉ์‹( Call by Reference) *

C++์— ์ถ”๊ฐ€๋œ ๊ฒƒ ์ค‘์— ํ•˜๋‚˜๊ฐ€ ๋ ˆํผ๋Ÿฐ์Šค(์ฐธ์กฐ)๋ณ€์ˆ˜์ด๋‹ค. ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜๋ž€ ๋ณ„๋ช…(์ผ์ข…์˜ ๋‹ค๋ฅธ์ด๋ฆ„)์„ ์˜๋ฏธํ•œ๋‹ค. ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜๋Š” ๋”ฐ๋กœ ๊ธฐ์–ต๊ณต๊ฐ„์ด ํ• ๋‹น๋˜์ง€ ์•Š๋Š”๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์˜ค๋กœ์ง€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๊ณ , ์—ฌ๋Ÿฌ ์ด๋ฆ„์œผ๋กœ ์ ‘๊ทผํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
์ž๋ฃŒํ˜• & ๋ณ„๋ช… = ๋ณ€์ˆ˜_์ด๋ฆ„;
(์ด๋ ‡๊ฒŒ ์„ ์–ธํ•˜๋Š” ๊ฒƒ ๋ง๊ณ ๋Š” ์ผ๋ฐ˜ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. *,&์ด๋Ÿฐ๊ฑฐ ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค!)

์ด๋•Œ ์‚ฌ์šฉ๋œ &๊ธฐํ˜ธ๋Š” ์ฐธ์กฐ ์—ฐ์‚ฐ์ž๋ผ๊ณ  ํ•œ๋‹ค.
๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜ ์„ ์–ธ์‹œ & ๊ธฐํ˜ธ๊ฐ€ ์‚ฌ์šฉ๋œ ๊ฒฝ์šฐ - ์ฐธ์กฐ ์—ฐ์‚ฐ์ž
์„ ์–ธ์ด ๋๋‚œ ๋ณ€์ˆ˜์— ์‚ฌ์šฉ๋˜๋Š” & ๊ธฐํ˜ธ๊ฐ€ ์‚ฌ์šฉ๋œ ๊ฒฝ์šฐ - ์ฃผ์†Œ ์—ฐ์‚ฐ์ž

*๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ์ฃผ์˜ํ•  ์ ์€ ๋ฐ˜๋“œ์‹œ ๋ณ€์ˆ˜ ์„ ์–ธ์‹œ ์ดˆ๊ธฐ๊ฐ’์„ ์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐ˜์‘ํ˜•