C++/기본 문법

void 포인터

겨울엔군고구마한잔 2022. 6. 30. 16:41

[ void ] : 아무런 타입 없음

 

[ void 포인터 ] : 원본의 자료형이 정해지지 않은 포인터

- 특징

   >> 원본의 자료형이 정해지지 않음

   >> 어떠한 타입의 변수 주소를 다 저장할 수 있음

   >> 어떠한 타입으로 해석할 지가 정해져 있지 않기에, 역참조 불가능

   >> 어떠한 타입으로 주소 연산을 할 지가 정해져 있지 않기에, 주소 연산 불가능

 

#include <stdio.h>

int main(){
	void* pVoid = nullptr;
    
    { 
    	int a = 0;
        float b = 0.0f;
        double c = 0.;
        long long d = 0;
        
        pVoid = &a;
        pVoid = &b;
        pVoid = &c;
        pVoid = &d;
        	// 가능
            // 모든 타입의 변수 주소를 저장할 수 있음
        
        *pVoid; 
        	// 불가능 - error
            // 어떤 타입으로 해석할 지가 안 정해져 있음
            // 역참조 불가능
        
        pVoid + 1;
        	// 불가능 - error
            // 어떤 타입으로 변수 주소를 연산할 지가 안 정해져 있음
            // 주소 연산 불가능
    }
	return 0;
}