void는 자료형을 지정하지 않았음을 의미합니다.
그렇기 때문에 void형을 가진 변수는 선언할 수 없으며,
void형 함수는 반환 값이 존재할 수 없습니다.
그러나 void형 포인터 변수는 만들 수 있습니다.
아래 코드를 보시면
10번째 줄에 void형 포인터 변수 pVoid가 선언되었습니다.
이후 12 ~ 15번째 줄에서 다양한 자료형을 가진
변수의 주솟값을 저장하였습니다.
여기서 void형 포인터 변수의 첫 번째 특징이 나옵니다.
1. 자료형을 지정하지 않았으므로
어떤 자료형을 가진 변수라도 주솟값을 저장할 수 있다.
강제로 형변환을 하지 않아도
자료형에 상관없이 주솟값을 저장할 수 있는 모습이죠.
17번째 줄에서 pVoid에
저장된 주소를 찾아가 값을 접근하려고 하니
(*을 붙여 값에 접근하는 것. 이것을 역참조라고 합니다.)
오류가 발생합니다. 두 번째 특징입니다.
2. 자료형을 지정하지 않았으므로
역참조를 하는 순간 그곳에 있는 값을 해석할 수 없다.
포인터 변수는 역참조(*)하여 그 값을 확인할 때
포인터 변수의 자료형을 기준으로 값을 해석하죠.
void형 포인터 변수는 해석의 기준이 되는 자료형이 없으므로
값을 해석할 수 없고 오류가 발생하는 것입니다.
그렇기에 18번 째 줄에서
pVoid가 저장하고 있는 주소에 1을
더하려고 해도 오류가 발생하죠.
이것이 세 번째 특징입니다.
3. 자료형을 지정하지 않았으므로 주소 연산을 할 수 없다.
주소 연산도 포인터 변수의 자료형을 기준으로 진행됩니다.
(+1을 했을 때 int형이면 4Byte 이동, char형이면 1Byte 이동하는 등)
void형 포인터 변수는 연산의 기준이 되는 자료형이 없으므로
주소 연산을 할 수 없는 것입니다.
강의 출처 : https://www.youtube.com/watch?v=PFc4g8mxOiI&list=PL4SIC1d_ab-aOxWPucn31NHkQvNPHK1D1&pp=iAQB
'C++ > 기초' 카테고리의 다른 글
C++ 기초 : 문자열 (1) (0) | 2024.04.02 |
---|---|
C++ 기초 : 문자 (0) | 2024.04.01 |
C++ 기초 : const 포인터 예시 (0) | 2024.03.31 |
C++ 기초 : const 포인터 (0) | 2024.03.31 |
C++ 기초 : const (0) | 2024.03.30 |