🏎️[C] 포인터와 μƒμˆ˜

μ΄κ°•μš±Β·2022λ…„ 10μ›” 25일
9

🏎️ C

λͺ©λ‘ 보기
1/3
post-thumbnail

μƒμˆ˜μ— λŒ€ν•œ 포인터

"A pointer which is looking at a constant."

const int *ptr;


μƒμˆ˜λ₯Ό κ°€λ¦¬ν‚€λŠ” 포인터이닀. κ·Έλž˜μ„œ 이 포인터λ₯Ό μ°Έμ‘°ν•΄μ„œλŠ” 값을 λ³€κ²½ν•  수 μ—†λ‹€.
근데 μœ„μ˜ 경우처럼 ν¬μΈν„°μ˜ μ •μ˜λ§Œ κ·Έλ ‡κ³ , μ‹€μ œ κ°€λ¦¬ν‚€λŠ” 값은 μƒμˆ˜κ°€ 아닐 μˆ˜λ„ μžˆλ‹€.

이런 κ²½μš°μ— μ•„λž˜μ™€ 같은 상황이 λ°œμƒν•  수 μžˆλ‹€.

i에 λŒ€ν•΄ const int *ptr1 = &i둜 'μƒμˆ˜μ— λŒ€ν•œ 포인터'λ₯Ό μ„€μ •ν–ˆμ§€λ§Œ,
i에 λŒ€ν•΄ λ‹€λ₯Έ 일반 포인터 int *ptr2 = &i둜 μ ‘κ·Όν•œ ν›„ κ·Έ 값을 λ³€κ²½ν•  수 μžˆμ—ˆλ‹€.

즉, ν¬μΈν„°λ‘œλŠ” μ–΄λ–€ 값에 'μƒμˆ˜μΈ νŠΉμ„±'을 'λΆ€μ—¬'ν•  μˆ˜λŠ” μ—†λ‹€.
κ·Έλž˜μ„œ const int *λŠ” κ°€λ¦¬ν‚€λŠ” 값을 μƒμˆ˜λ‘œ λ§Œλ“œλŠ” 것이 μ•„λ‹ˆκ³ ,
'μƒμˆ˜λ₯Ό κ°€λ¦¬ν‚€λŠ”λ° μ“°μ΄λŠ” 포인터'인 것이닀.

μƒμˆ˜(const)인 μ •μˆ˜(int)λ₯Ό κ°€λ¦¬ν‚€λŠ” 포인터(*).

κ·Έλ ‡λ‹΄ 이게 λ„λŒ€μ²΄ 무슨 μ“Έλͺ¨κ°€ μžˆλŠ” κ²ƒμΌκΉŒ.
λ‹€μŒκ³Ό 같은 상황이 있기 λ•Œλ¬Έμ΄λ‹€.

즉 μƒμˆ˜μ— λŒ€ν•΄ 일반 ν¬μΈν„°λ‘œ 포인터λ₯Ό μƒμ„±ν•˜λ©΄, κ·Έ μƒμˆ˜κ°€ 가진 μƒμˆ˜ νŠΉμ„±μ΄ discard λœλ‹€.
κ·Έλž˜μ„œ μ–΄λ–€ μƒμˆ˜κ°€ μžˆμ„ λ•Œ, κ·Έ μƒμˆ˜κ°€ 가진 μƒμˆ˜νŠΉμ„±(λΆˆλ³€μ„±)을 μ§€ν‚€λ©΄μ„œ κ·Έ μƒμˆ˜μ— λŒ€ν•œ 포인터λ₯Ό μƒμ„±ν•˜κ³  μ‹ΆμœΌλ©΄, μƒμˆ˜λ₯Ό κ°€λ¦¬ν‚€λŠ” 포인터λ₯Ό λ°˜λ“œμ‹œ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 것이닀.


μƒμˆ˜ν¬μΈν„°

"A pointer which is a constant."

int *const ptr;

포인터 λ³€μˆ˜μžμ²΄κ°€ μƒμˆ˜μ΄λ‹€.


μƒμˆ˜μ— λŒ€ν•œ μƒμˆ˜ν¬μΈν„°

"A pointer which is a constant is looking at a constant."

const int *const ptr;


μƒμˆ˜κ°’μ„ κ°€λ¦¬ν‚€λŠ” 포인터가 μžˆλŠ”λ°, κ·Έ 포인터 λ³€μˆ˜ μžμ²΄λ„ μƒμˆ˜μΈ κ²½μš°μ΄λ‹€.

profile
I think I think too much.

2개의 λŒ“κΈ€

comment-user-thumbnail
2022λ…„ 10μ›” 27일

λ†€λΌμ›Œμš”

1개의 λ‹΅κΈ€