티스토리 뷰

왜 포인터에 형(Type)을 지정했을까?

포인터를 사용하는 이유는 변수에 값을 쓰려는 함수는 변수 값이 아니라 변수의 주소가 필요해서이다. 그래야 함수를 벗어나서도 변경한 값이 유지되기 때문에 그렇다. 그러면 여러개의 변수들이 나열되어 있는 경우는 어떻게 할까? 각각의 변수 주소를 전부 보내줘야 할까? 각 변수 크기만큼 주소를 증가 시켜서 계산해주면 편리할 것이다. 이 때문에 나타난것이 포인터 연산이다.

포인터 연산

포인터 연산은 포인터 값을 증가 혹은 감소 같은 연산을 하는 것을 말하는데. 가령 포인터에 1을 더하면 다음 메모리 번지로 이동하는 것을 말한다. 그런데 변수의 경우 각각의 타입에 따라서 메모리 번지의 크기가 다르다 그래서 포인터의 형(type)을 지정해 줌으로써 메모리 번지를 얼마큼 증가시켜 주어야 하는지 컴파일러에게 알려주는 것이다. int 포인터에 1을 더하면 4만큼 증가될 것이다. 각 형에 대한 크기를 알아보려면 sizeof를 사용하면 된다. sizeof(int) 로 반환된 값이 해당 형(type)의 크기이다. 포인터 변수의 경우 가령 int *data; 은 sizeof(data)를 콜하였을 경우 아마도 4를 반환할 것이다. 포인터 변수의 크기가 반환되는 것이다.