[c언어] 포인터와 변수 주소

프로그래밍 언어에서 포인터(pointer)는 변수의 메모리 주소를 저장하는 변수입니다. 포인터를 사용하면 메모리 주소를 직접 조작할 수 있으므로 복잡한 데이터 구조를 효율적으로 다룰 수 있습니다.

포인터의 선언과 초기화

포인터를 선언할 때는 데이터 타입 뒤에 * 기호를 붙여야 합니다. 예를 들어, int 형 포인터는 int*로 선언합니다.

int main() {
    int num = 10;
    int *ptr = #
}

위 예제에서 ptrnum 변수의 주소를 가리키는 포인터입니다. & 연산자를 사용하여 변수의 주소를 얻을 수 있습니다.

포인터를 이용한 변수 값 변경

포인터를 사용하면 해당 포인터가 가리키는 메모리 주소에 접근하여 값을 변경할 수 있습니다.

int main() {
    int num = 10;
    int *ptr = #
    
    *ptr = 20; // ptr이 가리키는 곳의 값 변경
}

위 예제에서 *ptrptr이 가리키는 곳에 접근하는 것을 나타냅니다. 이를 통해 num의 값을 20으로 변경하였습니다.

포인터의 활용

포인터는 배열, 구조체 등을 다룰 때 특히 유용합니다. 예를 들어, 배열을 포인터로 표현하면 배열의 요소에 효율적으로 접근할 수 있습니다.

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    int *ptr = arr; // 배열의 첫 번째 요소의 주소를 가리킴
    
    printf("%d", *ptr); // 배열의 첫 번째 요소 출력
}

위 예제에서 *ptr은 배열의 첫 번째 요소에 접근하여 값을 출력합니다.

포인터는 메모리 주소를 다루는 강력한 도구로, 적절히 활용하면 프로그램의 성능을 향상시킬 수 있습니다.

참조