728x90
void Test(){
. . .
. . .
}
함수에서 리턴을 하지 않는 경우에는 void라는 키워드는 작성한다.
void가 포인터와 만나면?
void* pvoid=nullptr;
포인터 변수 앞의 자료형은 그 역참조의 단위를 나타낸다.
즉, int포인터라면 역참조시 int형으로 바라볼 것이다.
그럼 void는, 어떤 의미를 가지고 있을까?
⇒주소값을 가지는 포인터 변수이지만, 아직 어떤 방식으로 역참조를 할지는
정해지지 않았다는 뜻이 된다.
void* vpointer=nullptr;
int a = 0;
float b = 0.5f;
double c = 0.05;
long long d = 50;
vpointer = &a;
vpointer = &b;
vpointer = &c;
vpointer = &d;
따라서 이런 코드의 경우 오류가 나지 않는다.
void 포인터는 주소를 받아도 특정 데이터타입으로 해석을 하지 않기 때문이다.
*vpointer=50;
그래서 void포인터를 역참조 하는 경우에는 오류가 난다.
역참조를 하고 싶다면, 정확한 자료형을 다시 할당해 주어야 한다.
void* vpointer=nullptr;
int a = 510;
vpointer = &a;
int* ipointer = (int*)vpointer;
cout << *ipointer << endl;
특징을 정리하자면 다음과 같다.
1.원본의 자료형을 정하지 않는다.
2.어떠한 타입의 변수의 주소든 다 저장 가능하다.
3.역참조가 불가능하다.
4.주소 연산이 불가능하다
728x90
'프로그래밍 언어 > C++ [기본]' 카테고리의 다른 글
[C++기본] 20.문자열-1 (0) | 2021.09.23 |
---|---|
[C++기본] 19.문자 (0) | 2021.09.17 |
[C++기본] 17.const와 포인터 (0) | 2021.08.31 |
[C++기본] 16.const, 상수 (0) | 2021.08.31 |
[C++기본] 15.포인터와 배열 (0) | 2021.08.30 |