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 ํด์ค ๊ฐ(์ฃผ์์ ๋ํ ๊ฐ)์ด ๋์ผํ๊ฒ ๋์จ ๊ฒ์ ํ์ธํ ์ ์๋ค.
'๐ป > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c++] ๋ฐ์ฌ๋ฆผ / ์ฌ๋ฆผ / ๋ด๋ฆผ ํจ์ (0) | 2024.04.11 |
---|---|
[c++] DFS ๊น์ด ์ฐ์ ํ์ , ์ฌ๊ทํจ์ (0) | 2024.04.02 |
[c++] DAT (0) | 2024.03.21 |
[c++] insertํจ์/ eraseํจ์/ sortํจ์/ swapํจ์ (0) | 2024.03.21 |
[c++] vector ์ ๋ฆฌ (0) | 2024.02.18 |