wellcome_공부일기

02.04. C++ | 무치형(Void Data Types) = No Type! 본문

프로그래밍/C++

02.04. C++ | 무치형(Void Data Types) = No Type!

ma_heroine 2020. 5. 5. 02:44

<목차>

1. 무치형(Void Data Types)란?

2. 함수 내에서 void 알아보기

3. 유용한 void pointers(To Be Continued..)

 

 

무치형(Void Data Types)란?

void는 데이터 타입 중에서 가장 설명하기 쉬운 것 중 하나입니다.

말 그대로, "void"는 타입이 없음을 의미하기 때문입니다.

 

결과적으로 변수는 void 타입으로 정의 될 수 없습니다. 

void value; // won't work, variables can't be defined with a void type

 

- 메모리를 차지하지 않기 때문에 변수 선언이 불가능 합니다. 

 

 

함수 내에서 void 알아보기

메모리를 차지하지 않는 void는 일반적으로 다른 맥락에서 사용됩니다.(함수, void pointers, etc.) 

- 함수 내에서 리턴 값이 없을 때 사용

void writeValue(int x) // void here means no return value
{
    std::cout << "The value of x is: " << x << '\n';
    // no return statement, because this function doesn't return a value
}

- 만약 리턴 명령문을 쓰게 된다면 컴파일러 오류가 발생합니다.

 

-파라미터가 없는 함수에서 사용

보통 C언어에서 파라미터를 가지지 않는 함수를 지칭할 때, void를 사용합니다.

int getValue(void) // void here means no parameters
{
    int x;
    std::cin >> x;
    return x;
}

 

C++에서도 컴파일이 되지만, 파라미터 자리에 더이상 void를 쓰지 않고 있고 C++에서도 이를 선호하고 있습니다.

int getValue() // empty function parameters is an implicit void
{
    int x;
    std::cin >> x;
    return x;

- 파라미터를 가지지 않는 함수를 지칭할 때, void 대신 빈 파라미터 리스트를 사용하는게 가장 좋습니다. ・ᴥ・ 

 

 

유용한 void pointers

void는 포인터를 다룰 때, 많이 사용됩니다. 

#include <iostream>

using namespace std;

int main()
{
    int i =123;
    float f = 123.456f;

    void *my_void;

    my_void = (void*)&i;
    my_void = (void*)&f; 

    return 0;
}

- *가 붙은 것은 주소를 뜻합니다.

- &i는 정수형 변수의 주소를, &f는 실수형 변수의 주소를 나타냅니다.

데이터 타입이 다르고 데이터 사이즈가 다르더라도 각각의 데이터 타입의 주소를 표현하는 데이터 양은 동일합니다.

- 즉, 데이터 타입의 첫 주소 규격이 같다는 것을 의미합니다. 

- 이러한 과정에서 위 코드와 같이 void로 형변환을 진행할 수 있습니다.

- void*는 주소 타입으로 저장했다가 integer의 주소타입으로 변환하기도 하고 float의 주소타입으로 변환할 수도 있습니다.

 

 

포인터를 다루는 포스팅에서 더 자세하게 업데이트 하겠습니다!  (づ。◕‿‿◕。)づ 

 

 

 

 

 

 

 

* 해당 글은 홍정모님의 따라 배우는 C++을 공부한 토대로 작성되었습니다.

* 해당 글은 www.learncpp.com에서 void이론과 코드를 참고하여 작성하였습니다.

Comments