C++/포인터 (Pointers)

일반적인 λ³€μˆ˜μ— λŒ€ν•œ 포인터λ₯Ό κ³΅λΆ€ν•˜λ‹€λ³΄λ©΄, μƒμˆ˜ 값에 λŒ€ν•œ 포인터가 κΆκΈˆν•΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. 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
동적 ν• λ‹Ή: Dynamic Memory Allocation μš°λ¦¬λŠ” κ·Έλ™μ•ˆ 정적 할당을 톡해 λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν•˜κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 정적 할당을 ν†΅ν•˜λ©΄, μ»΄νŒŒμΌμ„ ν•  λ•Œμ— ν•„μš”ν•œ λ©”λͺ¨λ¦¬κ°€ ν• λ‹Ήλ˜κ³ , μ΄λŠ” ν”„λ‘œκ·Έλž¨ μ’…λ£Œμ‹œκΉŒμ§€ λ³€λ™λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 예λ₯Όλ“€μ–΄, ν”„λ‘œκ·Έλž¨ λ‚΄λΆ€μ—μ„œ μ–΄λ– ν•œ μ •μˆ˜ xλ₯Ό μ„ μ–Έν•˜μ˜€λ‹€λ©΄, κ·Έ λ³€μˆ˜μ˜ 값은 λ³€ν•  수 μžˆμœΌλ‚˜ λ³€μˆ˜μ—κ²Œ ν• λ‹Ήλœ λ©”λͺ¨λ¦¬λŠ” λκΉŒμ§€ λ³€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έ ν• λ‹Ήλœ λ©”λͺ¨λ¦¬λŠ” sizeof ν•¨μˆ˜λ‘œ μ•Œ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 그에 λ°˜ν•΄ 동적할당은 μ»΄νŒŒμΌμ„ ν•  λ•Œκ°€ μ•„λ‹Œ, λŸ°νƒ€μž„ 도쀑에 λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν•  수 있게 ν•΄μ€λ‹ˆλ‹€. 동적 할당을 톡해 Heap μ˜μ—­μ— 데이터λ₯Ό ν• λ‹Ήν•  수 μžˆμŠ΅λ‹ˆλ‹€. 즉, 동적 할당은 νž™ μ˜μ—­μ—μ„œ λ°œμƒν•©λ‹ˆλ‹€. 그리고 κ·Έ ν• λ‹Ήλœ 값에 λŒ€ν•œ 접근은 포인터λ₯Ό ν†΅ν•΄μ„œλ§Œ κ°€λŠ₯ν•©λ‹ˆλ‹€. C++ ..
Chan Lee
'C++/포인터 (Pointers)' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘