18. [C++] ํด๋ž˜์Šค ๋ณต์‚ฌ์ƒ์„ฑ์ž

2019. 6. 7. 00:05ใ†PROGRAMMING/C & C++

 

1. C์Šคํƒ€์ผ ์ดˆ๊ธฐํ™”์™€ C++์Šคํƒ€์ผ ์ดˆ๊ธฐํ™”

 

 

์œ„์˜ ๋‘ ๊ฐ€์ง€ ์ดˆ๊ธฐํ™” ๋ฐฉ์‹์€ ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋™์ผํ•˜๋‹ค.

 

 


 

 

2. ๋ณต์‚ฌ ์ƒ์„ฑ์ž

 

C์–ธ์–ด์—์„œ๋Š” '='๋ฅผ ๋Œ€์ž…์—ฐ์‚ฐ์œผ๋กœ ๊ฐ„์ฃผํ•˜์‹œ๋งŒ, 

๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ๋Š” ๋ฉค๋ฒ„ ๋Œ€ ๋ฉค๋ฒ„์˜ ๋ณต์‚ฌ๊ฐ€ ์ผ์–ด๋‚œ๋‹ค.

์ฆ‰, ๋ณต์‚ฌ ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

 

 

 

 

 

int iNum2 = iNum1;

int iNum2(iNum1);

์ด ๋‘ ๋ฌธ์žฅ์ด ๋™์ผํ•œ ์˜๋ฏธ๋กœ ํ•ด์„๋˜๋“ฏ์ด

 

 

CPlayer Player2 = Player1;

CPlayer Player2(Player1);

์ด ๋‘ ๋ฌธ์žฅ๋„ ๋™์ผํ•œ ์˜๋ฏธ๋กœ ํ•ด์„๋œ๋‹ค.

 

 

 

CPlayer Player2(Player1);

์ด ๋ฌธ์žฅ์— ๋‹ด๊ฒจ์žˆ๋Š” ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. CPlayerํ˜• ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

2. ๊ฐ์ฒด์˜ ์ด๋ฆ„์€ Player2์ด๋‹ค.

3. Player1์„ ์ธ์ž๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒ์„ฑ์ž ํ˜ธ์ถœ์„ ํ†ตํ•ด์„œ ๊ฐ์ฒด์ƒ์„ฑ์„ ํ•œ๋‹ค.

 

 

 

๋ณต์‚ฌ ์ƒ์„ฑ์ž๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์œผ๋ฉด,

๋ฉค๋ฒ„ ๋Œ€ ๋ฉค๋ฒ„์˜ ๋ณต์‚ฌ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๊ธฐ๋ณธ ๋ณต์‚ฌ ์ƒ์„ฑ์ž(๋””ํดํŠธ ๋ณต์‚ฌ ์ƒ์„ฑ์ž)๊ฐ€ ์ž๋™์œผ๋กœ ์‚ฝ์ž…๋œ๋‹ค.

 

 

 

๋ณต์‚ฌ ์ƒ์„ฑ์ž์˜ ์›ํ˜•์„ ์ •์˜ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

๋ฉค๋ฒ„ ๋Œ€ ๋ฉค๋ฒ„์˜ ๋ณต์‚ฌ์— ์‚ฌ์šฉ๋˜๋Š” ์›๋ณธ์„ ๋ณ€๊ฒฝ์‹œํ‚ค๋Š” ๊ฒƒ์€

๋ณต์‚ฌ์˜ ๊ฐœ๋…์„ ๋ฌด๋„ˆ๋œจ๋ฆฌ๋Š” ํ–‰์œ„๊ฐ€ ๋˜๋‹ˆ, const ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฝ์ž…ํ•ด์„œ ์ด๋Ÿฌํ•œ ์‹ค์ˆ˜๋ฅผ ๋ง‰๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

 

๋ณต์‚ฌ ์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ ์–ธ์—์„œ const๋Š” ํ•„์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, ์ฐธ์กฐํ˜•์˜ ์„ ์–ธ์„ ์˜๋ฏธํ•˜๋Š” &๋Š” ๋ฐ˜๋“œ์‹œ ์‚ฝ์ž…ํ•ด์•ผ ํ•œ๋‹ค.

 

 

 


 

 

 

3. '๊นŠ์€ ๋ณต์‚ฌ'์™€ '์–•์€ ๋ณต์‚ฌ'

 

๊ธฐ๋ณธ ๋ณต์‚ฌ ์ƒ์„ฑ์ž๋Š” ๋ฉค๋ฒ„ ๋Œ€ ๋ฉค๋ฒ„์˜ ๋ณต์‚ฌ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์˜ ๋ณต์‚ฌ๋ฅผ ๊ฐ€๋ฆฌ์ผœ '์–•์€ ๋ณต์‚ฌ'๋ผ ํ•˜๋Š”๋ฐ,

์ด๋Š” ๋ฉค๋ฒ„๋ณ€์ˆ˜๊ฐ€ ํž™์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ์— ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค.

 

 

 

๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ์ด๋ฆ„์„ ์ €์žฅํ•  char* ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด๊ฒ ๋‹ค.

 

 

 

 

ํž™ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

๊ธฐ๋ณธ ๋ณต์‚ฌ ์ƒ์„ฑ์ž๋Š” ๋ฉค๋ฒ„ ๋Œ€ ๋ฉค๋ฒ„๋ฅผ ๋‹จ์ˆœํžˆ ๋ณต์‚ฌ๋งŒ ํ•˜๋ฏ€๋กœ,

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๋ ๊ฒŒ ๋œ๋‹ค.

 

์ฆ‰, ๋ณต์‚ฌ์˜ ๊ฒฐ๊ณผ๋กœ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์„

๋‘ ๊ฐœ์˜ ๊ฐ์ฒด๊ฐ€ ๋™์‹œ์— ์ฐธ์กฐํ•˜๋Š” ๊ผด์„ ๋งŒ๋“ค์–ด๋ฒ„๋ฆฐ๋‹ค.

์ด๋กœ ์ธํ•ด์„œ ๊ฐ์ฒด์˜ ์†Œ๋ฉธ๊ณผ์ •์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

(์ด๋ฏธ ์ง€์›Œ์ง„ ๋ฌธ์ž์—ด์„ ๋Œ€์ƒ์œผ๋กœ delete ์—ฐ์‚ฐ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—)

 

 

 

 

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”

ํฌ์ธํ„ฐ๋กœ ์ฐธ์กฐํ•˜๋Š” ๋Œ€์ƒ๊นŒ์ง€ ๊นŠ๊ฒŒ ๋ณต์‚ฌํ•˜๋Š”

'๊นŠ์€ ๋ณต์‚ฌ'๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

 

์ฆ‰, ๊ธฐ๋ณธ ๋ฉค๋ฒ„ ๋Œ€ ๋ฉค๋ฒ„ ๋ณต์‚ฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ 

๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹น ํ›„ ๋ฌธ์ž์—ด ๋ณต์‚ฌ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

 

 

 

 

์†Œ๋ฉธ์ž ํ˜ธ์ถœ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ชจ์Šต์ด๋‹ค.

 

 

 


 

 

 

4. ๋ณต์‚ฌ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ์‹œ์ 

 

๋ณต์‚ฌ ์ƒ์„ฑ์ž์˜ ํ˜ธ์ถœํšŸ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ๊ณผ๋„ ๊ด€๊ณ„๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—,

ํ˜ธ์ถœ์˜ ์‹œ๊ธฐ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.

 

[ ๋ณต์‚ฌ ์ƒ์„ฑ์ž์˜ ํ˜ธ์ถœ์‹œ์  3๊ฐ€์ง€ ]

1. ๋จผ์ € ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๋‚˜์ค‘์— ์ƒ์„ฑ๋œ ๊ฐ์ฒด์˜ ์ƒ์„ฑ์ž ์ธ์ž๋กœ ์ „๋‹ฌํ•  ๋•Œ

 

 

 

 

2. Call by value ๋ฐฉ์‹์˜ ํ•จ์ˆ˜ ์ธ์ž๋กœ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•  ๋•Œ

 

 

 

 

3. ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋˜, ์ฐธ์กฐํ˜•์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ