매개변수 앞에 const를 쓰는 이유가 뭔가요?
매개변수에 const를 붙이는 이유가 함수 안에서 인수를 변경할 수 없게 하기 위한 것으로 알고 있습니다.
그런데..C언어에서 매개변수에 수를 대입시키면 수가 자동으로 바뀌나요?
매개변수에 대입한 수가 바뀌지 않으면 굳이 const를 쓰지 않아도 될 것 같은데....
사용하는 이유를 모르겠네요.
55글자 더 채워주세요.
2개의 답변이 있어요!
const는 일반 변수선언과 같아보이지만
변수의 값을 절대 바꿀수 없는 변수를 사용할때 사용합니다.
즉 c언어에서 const로 선언한 변수A에 대해 다른 값을 집어넣어도 그 변수A는 변하지 않습니다.
굳이 쓰는 이유라하면 개발자의 실수로 변수를 변경하거나 혹은 해킹을 당해 변수의 변경을 하고자 하는 경우를 막고자하여 사용합니다.
그리고 참고로 포인터와 함께 사용하는경우 값의 변경을 막되 주소의 변경이 가능한경우 또는 값은 변경이 되지만 포인터 주소의 변경을 막는 방법으로도 사용이 가능합니다
안녕하세요.
포인터를 함수에 전달할 경우 call by reference이므로 전달한 포인터의 값을 함수 내부에서 수정할 수도 있지요? 반면에 단순히 포인터 주소 가지고 연산만 하려는 경우일 수 있습니다.
이 경우에 '함수 정의만 보고는 다른 사람이 만든 함수'가 내가 전달한 파라미터 값을 내부에서 수정하는지, 아니면 리턴값을 구하기 위해 참조만 하는 것인지 알 수 없습니다.
따라서 함수 파라미터에 const pointer를 쓰는 의미는 '난 값 참조만 할꺼고 수정은 안하니까 리턴값만 잘 확인해라'라는 의미입니다.