포인터

C++μ—μ„œ ν•¨μˆ˜λŠ” 포인터듀도 리턴할 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬ν•œ ν•¨μˆ˜λ“€μ€ type *funcion(); 의 ν˜•νƒœλ‘œ μ„ μ–Έλ©λ‹ˆλ‹€. ν•œκ°€μ§€ μ€‘μš”ν•œ 점은 'μ ˆλŒ€λ‘œ ν•¨μˆ˜ λ‚΄μ˜ 둜컬 λ³€μˆ˜λ₯Ό λ¦¬ν„΄ν•˜μ§€ μ•ŠλŠ”λ‹€.' μž…λ‹ˆλ‹€. κ°„λ‹¨ν•œ μ˜ˆμ‹œ μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. int *largest_int(int *int_ptr1, int *int_ptr2){ if (*int_ptr1 > *int_ptr2) return int_ptr1; else return int_ptr2; } λ‘κ°œμ˜ μ •μˆ˜ 포인터λ₯Ό λΉ„κ΅ν•˜μ—¬ 더 큰 κ°’μ˜ μ •μˆ˜μ˜ 포인터λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 이 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 메인 ν•¨μˆ˜μ˜ μ˜ˆμ‹œλŠ” λ‹€μŒκ³Ό 같을 수 μžˆμŠ΅λ‹ˆλ‹€. int main() { int a {30}; int b {40}; int *largest_ptr{nullptr}; largest_p..
일반적인 λ³€μˆ˜μ— λŒ€ν•œ 포인터λ₯Ό κ³΅λΆ€ν•˜λ‹€λ³΄λ©΄, μƒμˆ˜ 값에 λŒ€ν•œ 포인터가 κΆκΈˆν•΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. const ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•˜λŠ” μƒμˆ˜λŠ” μ•Œλ‹€μ‹œν”Ό κ·Έ 값이 μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™” 이후에 λ³€κ²½ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 그리고 ν¬μΈν„°λŠ” μƒμˆ˜μ— λŒ€ν•œ κΈ°λŠ₯도 μ—­μ‹œ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μƒμˆ˜μ™€ κ΄€λ ¨λœ ν¬μΈν„°λŠ” 총 세가지 μ’…λ₯˜λ‘œ λΆ„λ₯˜ν•  수 μžˆκ² μŠ΅λ‹ˆλ‹€. μƒμˆ˜μ— λŒ€ν•œ 포인터 (pointers to constants) μƒμˆ˜ 포인터 (constant pointers) μƒμˆ˜μ— λŒ€ν•œ μƒμˆ˜ 포인터 (constant pointers to constnats) ν•˜λ‚˜μ”© μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. 1. μƒμˆ˜μ— λŒ€ν•œ 포인터 (pointers to constants) μƒμˆ˜μ— λŒ€ν•œ 포인터가 κ°€λ₯΄ν‚€λŠ” λ°μ΄ν„°λŠ” μƒμˆ˜μ΄κ³ , 변경될 수 μ—†μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 포인터 μŠ€μŠ€λ‘œλŠ” λ³€κ²½λ˜κ³  λ‹€λ₯Έ ..
C++의 ν¬μΈν„°λŠ” Assignment Expressions (λŒ€μž… ν‘œν˜„μ‹) Arithmetic Expressions (μ‚°μˆ  ν‘œν˜„μ‹) Comparison Expressions (비ꡐ ν‘œν˜„μ‹) μ—μ„œ μ‚¬μš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€. 포인터에 λŒ€ν•œ λ‹€μ–‘ν•œ μ—°μ‚°(μ‚°μˆ )이 κ°€λŠ₯ν•©λ‹ˆλ‹€. λ‹€μŒμ€ 포인터에 적용 κ°€λŠ₯ν•œ λͺ‡κ°€μ§€ μ—°μ‚°λ“€μž…λ‹ˆλ‹€. (++) ν¬μΈν„°μ˜ 값을 μ¦κ°€μ‹œμΌœ λ°°μ—΄μ˜ λ‹€μŒ μš”μ†Œλ₯Ό κ°€λ₯΄ν‚€λ„둝 ν•©λ‹ˆλ‹€. int_ptr++; (--) ν¬μΈν„°μ˜ 값을 κ°μ†Œμ‹œμΌœ λ°°μ—΄μ˜ 이전 μš”μ†Œλ₯Ό κ°€λ₯΄ν‚€λ„둝 ν•©λ‹ˆλ‹€. int_ptr--; (+) ν¬μΈν„°μ˜ 값을 n * sizeof(type) 만큼 μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€. int_ptr += n; or int_ptr = int_ptr + n; (-) ν¬μΈν„°μ˜ 값을 n * sizeof(type) 만큼 κ°μ†Œμ‹œν‚΅λ‹ˆλ‹€. i..
λ°°μ—΄κ³Ό ν¬μΈν„°μ˜ 관계: Relationship Between Arrays and Pointers λ°°μ—΄κ³Ό 포인터λ₯Ό λ‘˜ λ‹€ μ–ΌμΆ” μ΄ν•΄ν•˜κ²Œ 되면, ν•œκ°€μ§€ 곡톡점을 μ•Œκ²Œ λ©λ‹ˆλ‹€. λ°°μ—΄μ˜ 이름이 μ–΄λ–€ 것을 μ˜λ―Έν•˜λŠ”μ§€ κΈ°μ–΅ν•˜κ³  κ³„μ‹œλ‚˜μš”? λ°”λ‘œ 'λ°°μ—΄μ˜ 첫번째 λ°μ΄ν„°μ˜ μ£Όμ†Œκ°’'을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 그리고, 포인터 λ³€μˆ˜μ˜ 값은 μ£Όμ†Œκ°’μ΄μ˜€μŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ 보면 사싀상 λ°°μ—΄μ˜ 이름과 ν¬μΈν„°λŠ” λ™μΌν•œ 것 같지 μ•Šλ‚˜μš”? μ‹€μ œλ‘œ λ§Œμ•½ 포인터가 λ°°μ—΄μ˜ μš”μ†Œμ™€ λ™μΌν•œ νƒ€μž…μ„ 가지고 μžˆλ‹€λ©΄, 포인터와 배열은 μƒν˜Έκ΅ν™˜μ μœΌλ‘œ, (사싀상) λ™μΌν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ°„λ‹¨ν•œ μ½”λ“œλ‘œ 이λ₯Ό 확인해 λ³΄κ² μŠ΅λ‹ˆλ‹€. int scores[]{100, 90, 80}; cout
Chan Lee
'포인터' νƒœκ·Έμ˜ κΈ€ λͺ©λ‘