Tiny Bunny
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป/C++

[c++] ๋ณ€์ˆ˜์™€ ํฌ์ธํ„ฐ (pointer)

by soonybutter 2024. 2. 18.
728x90

 

 c++ ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐฉ์‹๊ณผ 

๊ทธ๋ฆฌ๊ณ  ๊ฐ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด๋ถ€์˜ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•œ ํฌ์ธํ„ฐ(pointer) ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด์ž.

 

1.  ๋ณ€์ˆ˜ 

๋ณ€์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์„ ์–ธํ•˜๋Š” ์ง€์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์˜ ์ €์žฅ๋˜๋Š” ๊ณณ์ด ๋‹ค๋ฅด๊ธฐ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜์„ ์–ธ์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•ด ์ •๋ฆฌํ•œ๋‹ค.

 

๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐ์—๋Š” '๋ณ€์ˆ˜์˜ ์œ ํšจ ๋ฒ”์œ„(variable scope) '์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ์ง€์—ญ ๋ณ€์ˆ˜(local variable)

2. ์ „์—ญ ๋ณ€์ˆ˜ (global variable)

3. ์ •์  ๋ณ€์ˆ˜ (static variable)

4. ๋ ˆ์ง€์Šคํ„ฐ ๋ณ€์ˆ˜ (register variable)

 

 

์ „์—ญ๋ณ€์ˆ˜
  • ์–ด๋–ค ๋ณ€์ˆ˜ ์˜์—ญ ๋‚ด์—์„œ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜
  • ์–ด๋–ค ์Šค์ฝ”ํ”„์—์„œ๋„ ์ฐธ์กฐ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ์˜ ํž™(heap) ์˜์—ญ์— ํ• ๋‹น๋จ.

 

์ง€์—ญ๋ณ€์ˆ˜
  • '๋ธ”๋ก' ๋‚ด์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ธ”๋ก ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•˜๋ฉฐ, ๋ธ”๋ก์ด ์ข…๋ฃŒ๋˜๋ฉด ๋” ์ด์ƒ ์œ ํšจํ•˜์ง€ ์•Š์Œ.
  • ๋ฉ”๋ชจ๋ฆฌ์˜ ์Šคํƒ(stack) ์˜์—ญ์— ํ• ๋‹น๋จ.

 

์ •์ ๋ณ€์ˆ˜
  • static ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜์ด๋‹ค.
  • ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์ด ๋๋‚˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ, ์ •์ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์ด ๋๋‚˜๋„ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค.(์ฆ‰, ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ์˜ ์ด์ „์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.)

 

๋ ˆ์ง€์Šคํ„ฐ ๋ณ€์ˆ˜
  • register ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜์ด๋‹ค.
  • ๋ ˆ์ง€์Šคํ„ฐ ๋ณ€์ˆ˜๋Š” CPU์˜ ๋ ˆ์ง€์Šคํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ๋‹ค. (๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.)
  • ํ•˜์ง€๋งŒ cpu์˜ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์šฉ๋Ÿ‰์ด ํฌ์ง€ ์•Š์•„ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ธฐ ํž˜๋“ค๋‹ค๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•œ๋‹ค.

 

 

2.  ํฌ์ธํ„ฐ (pointer)

  • ํฌ์ธํ„ฐ๋Š” ๋ณ€์ˆ˜๋กœ์จ, ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜์ด๋‹ค.

 ์šฐ๋ฆฌ๊ฐ€ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋  ๊ณต๊ฐ„์„ ํ• ๋‹น ๋ฐ›๋Š”๋‹ค.

์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„์„œ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฌด์—‡์ด ํ•„์š”ํ• ๊นŒ ?

๋ฐ”๋กœ '๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ ๊ฐ’'์ด ํ•„์š”ํ•˜๋‹ค.

 

์ €์žฅ๋œ ๊ฐ’:23
์ €์žฅ๋œ ๊ฐ’:24
์ €์žฅ๋œ ๊ฐ’:25
์ €์žฅ๋œ ๊ฐ’:29

 ๋งŒ์•ฝ int ๋ณ€์ˆ˜๋กœ ๊ฐ’์„ ์œ„์— ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ,

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋Š” int ๋ณ€์ˆ˜์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ณ  ํ•ด๋‹น ์ฃผ์†Œ ์•ˆ์˜ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ์—ญ์‹œ ๋ณ€์ˆ˜์ž„์œผ๋กœ, ๋ฉ”๋ชจ๋ฆฌ ๋‚ด๋ถ€์— ์ €์žฅ๋˜์–ด ์žˆ์„ ํฌ์ธํ„ฐ ๊ฐ’์˜ ํฌ์ธํ„ฐ์˜ ์ฃผ์†Œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

 

ํฌ์ธํ„ฐ(pointer)๋Š” 

* ์™€ & ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.     (&์„ ๋ณ€์ˆ˜ ์•ž์— ๋ถ™์—ฌ์ฃผ๋ฉด ์ฃผ์†Œ๊ฐ€ ๋‚˜์˜จ๋‹ค.)

์ฆ‰, ํƒ€์ž…* ๋ณ€์ˆ˜๋ช… = &์ผ๋ฐ˜ ๋ณ€์ˆ˜๋ช…;  ์ด๋‹ค.

๊ฒฐ๊ณผ๊ฐ’

cout ํ•ด์ค€ ๊ฐ’(์ฃผ์†Œ์— ๋Œ€ํ•œ ๊ฐ’)์ด ๋™์ผํ•˜๊ฒŒ ๋‚˜์˜จ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

728x90

TOP

Designed by ํ‹ฐ์Šคํ† ๋ฆฌ