본문 바로가기
IT/c언어

C언어 void 포인터

by 뉴코딩맨 2023. 7. 14.
void 포인터(void pointer)는 C언어에서 데이터 타입이 없는 포인터입니다. 다른 포인터 타입과 달리 void 포인터는 어떤 타입의 주소도 가질 수 있으며, 필요한 경우 타입 캐스팅을 통해 다른 포인터 타입으로 변환될 수 있습니다.

 

 

void 포인터의 선언과 사용

void 포인터는 다음과 같은 방법으로 선언됩니다.
 
void *ptr;
 
위의 예제에서 ptr은 void 포인터로 선언되었습니다. 이제 이 void 포인터에 어떤 타입의 주소도 할당할 수 있습니다.
 

예제와 설명

아래의 예제를 통해 void 포인터의 동작을 이해해보겠습니다.

 

#include <stdio.h>

int main() {
    int num = 10;
    float pi = 3.14;
    char ch = 'A';

    void *ptr;

    // int 타입 변수의 주소를 void 포인터에 할당
    ptr = &num;
    printf("정수값: %d\n", *(int *)ptr);

    // float 타입 변수의 주소를 void 포인터에 할당
    ptr = &pi;
    printf("실수값: %.2f\n", *(float *)ptr);

    // char 타입 변수의 주소를 void 포인터에 할당
    ptr = &ch;
    printf("문자값: %c\n", *(char *)ptr);

    return 0;
}
 
위의 예제에서는 num, pi, ch라는 세 가지 변수를 선언하고 초기화합니다. 그리고 ptr이라는 void 포인터를 선언합니다. ptr에 각 변수의 주소를 할당하고, 이를 다시 타입 캐스팅하여 값을 출력합니다.
 
 

결과 설명

위의 예제를 실행하면 다음과 같은 결과가 출력됩니다.
 
정수값: 10
실수값: 3.14
문자값: A
 
첫 번째 출력에서는 ptr에 num 변수의 주소를 할당하여 해당 주소의 값을 출력합니다. 두 번째 출력에서는 ptr에 pi 변수의 주소를 할당하여 해당 주소의 값을 출력합니다. 마지막으로 세 번째 출력에서는 ptr에 ch 변수의 주소를 할당하여 해당 주소의 값을 출력합니다.
 

결론

void 포인터는 C언어에서 데이터 타입이 없는 포인터로, 어떤 타입의 주소도 가질 수 있습니다. void 포인터는 다른 포인터 타입으로 타입 캐스팅하여 사용할 수 있으며, 메모리의 일부를 일시적으로 무시하거나 다양한 타입의 데이터를 처리할 때 유용합니다. void 포인터를 사용함으로써 프로그램의 유연성을 높일 수 있으며, 다양한 데이터 타입을 처리하는 함수의 매개변수나 반환값으로 활용할 수 있습니다.
 
 

'IT > c언어' 카테고리의 다른 글

C 언어 putchar, fputc 함수  (0) 2023.07.16
C 언어 2차원 배열 포인터  (0) 2023.07.15
C언어 함수 포인터  (0) 2023.07.14
C언어 이중포인터  (0) 2023.07.14
C언어 3차원 배열  (0) 2023.07.14

댓글