[c언어] 포인터와 포인터 연산자

이번에는 C언어에서 중요한 개념 중 하나인 포인터와 포인터 연산자에 대해 알아보겠습니다.

포인터란 무엇인가요?

포인터란 변수의 주소를 저장하는 변수입니다. 이를 통해 변수의 주소를 저장하고, 해당 주소에 저장된 값을 변경하거나 참조할 수 있습니다.

포인터는 다음과 같은 형태로 선언됩니다.

int *ptr;

위의 예시에서 int는 포인터가 가리킬 변수의 데이터 형식을 나타내며, *는 해당 변수가 포인터임을 나타냅니다.

포인터 연산자

포인터 연산자는 포인터를 사용하여 변수의 값을 참조하거나 변경할 수 있도록 해주는 연산자입니다.

역참조 연산자 (*)

* 연산자는 포인터가 가리키는 값을 참조할 때 사용됩니다. 다음의 예시를 통해 설명해보겠습니다.

int num = 10;
int *ptr = #   // num 변수의 주소를 ptr에 저장
int value = *ptr;  // ptr이 가리키는 주소에 저장된 값을 가져와서 value에 저장

주소 연산자 (&)

& 연산자는 변수의 주소를 구할 때 사용됩니다. 다음의 예시를 통해 설명해보겠습니다.

int num = 20;
int *ptr = #  // num 변수의 주소를 ptr에 저장

포인터 연산

포인터는 포인터 연산을 통해 증가나 감소시킬 수 있습니다. 다음의 예시를 통해 설명해보겠습니다.

int arr[] = {1, 2, 3, 4, 5};
int *ptr = arr;      // 배열의 첫 번째 요소를 가리키도록 ptr에 저장
int value = *ptr;    // ptr이 가리키는 배열의 값은 1
ptr++;              // ptr을 다음 요소를 가리키도록 증가
value = *ptr;       // ptr이 가리키는 배열의 값은 2

이렇게 포인터를 사용하여 변수의 주소를 저장하고 값을 참조하거나 변경할 수 있습니다. 포인터를 사용하면 메모리를 효율적으로 활용할 수 있고, 배열이나 구조체와 같은 자료구조를 다룰 때 유용하게 활용할 수 있습니다.