본문 바로가기
C++/기초

C++ 기초 : void

글: 시플마 2024. 3. 31.

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