만약 어떠한 함수에서 main 함수의 값을 int test(int a)
이런식으로 a로 받아간다면?
같은 값을 a로 복사해 가는거임, 근데 만약 이 값이 너무 크거나 유일해야만하는 값이면 복사해 가는게 문제가 될 수 있음
값이 너무 크다면 굳이 함수가 끝날 때 사라질 값을 복사할 필요가 없기 때문에 이런 방식은 매우 비효율적임, 거기다 함수까지 자주 호출되면? 성능이 엄청나게 떨어질 수 있음
근데 만약 포인터로 접근해서 확인하게 시킨다면? 굳이 다른 메모리 공간에 복사할 필요없이 바로 주소로 가서 확인하면 됨
그런데 복사한 값이 아니라 원본에 접근하는거기 때문에? 원본 데이터가 바뀌어버릴 수도 있음, 그냥 데이터만 주려고 했는데 값이 바뀌면 문제가 됨
이때 int test(const int* pInt)
이런걸 사용하면 되는거임 (지금 int를 사용하는건 그냥 예시고 인자를 구조체로 받으면 엄청나게 커짐)
이렇게 쓰면 읽기전용이 된거임, good
ctrl + shift + space = 함수 원형 띄우기
const int* a
로 선언된 애를 int* test_int = (int*)a;
강제로 int 포인터로 캐스팅하면? 바꿀 수 있음, 따라서 절대적으로 못바꾸게 하는건 아님
*test_int = 500;
이런식으로 바꾸면 바뀌는거
따라서 완전 막을 수 있는건 아니지만 제작자의 의도를 알려줄 수 있는거임, 이걸 무시하는 사람하고는 협업하면 안됨...