일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 프로그래밍
- 단항연산자
- 본즈앤올
- compile time constants
- C++
- 나동빈님
- 홍정모님
- 기계학습
- Machine Learning
- 연산자
- 코딩테스트
- sizeof()
- const
- algorithm
- standford University
- Runtime constants
- 이코테
- regression problem
- #endif
- 학습 알고리즘
- 코드블럭 오류
- CLion
- decimal
- #define
- 기계학습 기초
- Greedy
- coursera
- classification problem
- Andrew Ng
- 형변환
- Today
- Total
wellcome_공부일기
02.04. C++ | 무치형(Void Data Types) = No Type! 본문
<목차>
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이론과 코드를 참고하여 작성하였습니다.
'프로그래밍 > C++' 카테고리의 다른 글
C++ | 02.06 Boolean 자료형과 조건문 if (0) | 2020.05.07 |
---|---|
C++ | 02.05. 부동소수점 수(Floating Point Numbers) (0) | 2020.05.06 |
02.03. C++ | 고정너비 정수(Fixed-width integers)란? (0) | 2020.05.04 |
02.02. C++ | 정수형(Integer Data Types) (0) | 2020.05.03 |
02.01. C++ | 기본 자료형(Primitive Built-in Types)과 + α (0) | 2020.05.02 |