Const

민혁 공부방·2024년 11월 30일

const란?
상수로서 변하지 않는 값을 뜻한다.

const를 왜 사용하나?
프로그램을 작성하면서 고정돼야 할 값을 변수에 저장해서 사용하다보면 실수로 변수의 값을 변경할 수 있다. 이를 방지하기 위해서 쓴다.


우리는 size 변수를 5라고 const지정어를 통해 고정시켰기 때문에
size를 6으로 다시 바꾸는 부분에 있어서 에러가 걸린다.


const 포인터 변수에 대한 이해
1. const 지정어가 맨 앞에 있는 경우

포인터 변수가 가리키는 값을 상수화 하는 것이다.
즉, *ptr을 상수화 시키는 것이기 때문에, 주소를 넘겨준 num의 값은 변경이 가능하다.

  1. const 지정어가 중간에 있는 경우

    포인터 변수 자체 (*ptr이 아닌, ptr)을 상수화 시키는 것으로서
    ptr의 주소자체에 대한 변경은 불가능하다.

  2. const를 둘다 사용하는 경우

ptr의 주소자체에 대한 변경도 불가능
*ptr에 대한 값 변경도 불가능


함수에서의 const에 대한 이해

  1. 매개변수에 const지정어가 들어가는 경우

    num1과 num2는 const에 대한 변수로 들어갔기에 값에 대한 변경은 불가능하므로, 읽기만 가능하다.

  2. 함수 선언에 사용되는 const 멤버 함수

    (참고 : https://thinkpro.tistory.com/141)
    같은 경우, 읽기전용 함수로서, 객체의 멤버변수를 변경할수 없는 역할을 한다.


(참고 : https://googleyness.tistory.com/entry/const-%EA%B0%9C%EB%85%90-%ED%95%9C%EB%B2%88%EC%97%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0)
Call by Value로 들어가는 값은 Return 형 int가 const로 들어가기 때문에,

상수화가 된 num값을 한번더 상수화를 하는 것이기에 오류가 나지만,

Call by Reference로 들어가는 값은

Reference값을 상수화하였기 때문에, const지정어를 붙여줘야한다.


Call by Value, Call by Reference에 대한 글
https://kangworld.tistory.com/64

profile
한번 더 복습하기 위한 개인 공간입니다!

0개의 댓글