"Void"의 두 판 사이의 차이
잔글 (→같이 보기) |
|||
(다른 사용자 한 명의 중간 판 7개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''void'''(보이드) 는 리턴(return) 되는 타입이 없음을 의미한다. 즉 아무것도 리턴하지 않음을 선언해주는 것과 같다. | + | '''void'''(보이드) 는 리턴([[return]]) 되는 타입이 없음을 의미한다. 즉 아무것도 리턴하지 않음을 선언해주는 것과 같다. |
==개요== | ==개요== | ||
− | 함수의 반환값이 없을때는 void 라고 붙여주면 된다. 이 void라는 것은 '무치형' 이라고 하는 자료형으로, 아무것도 없다는 것을 | + | 함수의 반환값이 없을때는 void 라고 붙여주면 된다. 이 void라는 것은 '무치형' 이라고 하는 자료형으로, 아무것도 없다는 것을 명시해줄 때 사용한다. |
*예시1 | *예시1 | ||
void output(void); | void output(void); | ||
14번째 줄: | 14번째 줄: | ||
} | } | ||
− | 위에 | + | 위에 예시1처럼 output()은 인자도 없고 반환값도 없는 함수로 선언되었으며 이런 형식으로 굉장히 자주 선언하게 된다. 하지만 void가 포인터가 된다면 뜻이 정반대로 바뀌게 된다. 또한 예시2 함수 test()는 void로 리턴([[return]])타입을 선언하였다. 만약 리턴타입이 다르다면 실제 함수의 리턴값도 동일해야 하며 예시3은 [[string]]이므로 문자열을 리턴해야 한다. |
char k = 'B'; | char k = 'B'; | ||
int n = 5; | int n = 5; | ||
21번째 줄: | 21번째 줄: | ||
p = (void*) &k; | p = (void*) &k; | ||
p = (void*) &n; | p = (void*) &n; | ||
− | 위의 예시에서 어떤 포인트건 간에 void*로 형전환을 시켜준다면 모두 넣을 수가 있는, 어찌보면 만능 포인터가 되어버린다. 어떤 자료형이든 주소는 | + | 위의 예시에서 어떤 포인트건 간에 [[void*]]로 형전환을 시켜준다면 모두 넣을 수가 있는, 어찌보면 만능 포인터가 되어버린다. 어떤 자료형이든 주소는 4[[바이트]]로 동일하기 때문에 이와 같은 일이 가능하다.<ref>SnowL, 〈[https://studyc.tistory.com/21 초보자를 위한 기초 C 언어 강좌 #17 : 함수]〉, 《티스토리》, 2016-08-18</ref> |
==종류== | ==종류== | ||
− | *'''보이드 메인'''(void main) : | + | *'''[[보이드 메인]]'''(void main) : [[씨언어]]를 하다 보면 [[int main]]으로 선언하는 사람도 있고 void main으로 선언하는 사람도 있다. 이 둘의 차이는 리턴([[return]])값이 존재하느냐 존재하지 않느냐'의 차이밖에 없다. 이는 main함수라는 말에서 이유를 알아낼 수 있다. 본래 함수란 return값을 가지고 쓰는 것이 정석과도 같지만, a라는 숫자와 b라는 숫자를 더하는 함수를 만들었다고 가정한다면, 이 함수는 printf()로 a+b 값을 찍어내는 것이 아닌 return a+b로 값을 넘겨주는 것이 함수를 쓸 때 올바르게 사용했다고 할 수 있는 것이다.<ref>SLL, 〈[https://m.blog.naver.com/mint3081/221611187046 (C언어) int main, void main, main의 차이점/ main 함수의 파라미터]〉, 《네이버블로그》, 2015-10-06</ref> |
− | *'''보이드 포인터'''(void | + | *'''[[보이드 포인터]]'''(void pointer) : 보이트 포인터는 포인터이다. 포인터는 변수이며 주소 값을 갖는 변수이다. 따라서 void포인터도 주소 값을 담는 변수이다. int포인터는 int형 변수의 주소를 저장하고 void포인터는 어떤 타입으로든 형변환이 가능하다.<ref>천프로, 〈[https://blog.naver.com/sharonichoya/220501081810 C언어 void 포인터(void*)]〉, 《네이버블로그》, 2019-08-09</ref> |
{{각주}} | {{각주}} | ||
36번째 줄: | 36번째 줄: | ||
== 같이 보기 == | == 같이 보기 == | ||
+ | * [[보이드 메인]] | ||
+ | * [[보이드 포인터]] | ||
+ | * [[씨언어]] | ||
+ | * [[return]] | ||
{{프로그래밍|검토 필요}} | {{프로그래밍|검토 필요}} |
2021년 7월 31일 (토) 00:14 기준 최신판
void(보이드) 는 리턴(return) 되는 타입이 없음을 의미한다. 즉 아무것도 리턴하지 않음을 선언해주는 것과 같다.
개요[편집]
함수의 반환값이 없을때는 void 라고 붙여주면 된다. 이 void라는 것은 '무치형' 이라고 하는 자료형으로, 아무것도 없다는 것을 명시해줄 때 사용한다.
- 예시1
void output(void);
- 예시2
public void test() { siteurl = 'webisfree.com'; }
- 예시3
public string getUrl() { return 'webisfree.com'; }
위에 예시1처럼 output()은 인자도 없고 반환값도 없는 함수로 선언되었으며 이런 형식으로 굉장히 자주 선언하게 된다. 하지만 void가 포인터가 된다면 뜻이 정반대로 바뀌게 된다. 또한 예시2 함수 test()는 void로 리턴(return)타입을 선언하였다. 만약 리턴타입이 다르다면 실제 함수의 리턴값도 동일해야 하며 예시3은 string이므로 문자열을 리턴해야 한다.
char k = 'B'; int n = 5; void *p = NULL; p = (void*) &k; p = (void*) &n;
위의 예시에서 어떤 포인트건 간에 void*로 형전환을 시켜준다면 모두 넣을 수가 있는, 어찌보면 만능 포인터가 되어버린다. 어떤 자료형이든 주소는 4바이트로 동일하기 때문에 이와 같은 일이 가능하다.[1]
종류[편집]
- 보이드 메인(void main) : 씨언어를 하다 보면 int main으로 선언하는 사람도 있고 void main으로 선언하는 사람도 있다. 이 둘의 차이는 리턴(return)값이 존재하느냐 존재하지 않느냐'의 차이밖에 없다. 이는 main함수라는 말에서 이유를 알아낼 수 있다. 본래 함수란 return값을 가지고 쓰는 것이 정석과도 같지만, a라는 숫자와 b라는 숫자를 더하는 함수를 만들었다고 가정한다면, 이 함수는 printf()로 a+b 값을 찍어내는 것이 아닌 return a+b로 값을 넘겨주는 것이 함수를 쓸 때 올바르게 사용했다고 할 수 있는 것이다.[2]
- 보이드 포인터(void pointer) : 보이트 포인터는 포인터이다. 포인터는 변수이며 주소 값을 갖는 변수이다. 따라서 void포인터도 주소 값을 담는 변수이다. int포인터는 int형 변수의 주소를 저장하고 void포인터는 어떤 타입으로든 형변환이 가능하다.[3]
각주[편집]
- ↑ SnowL, 〈초보자를 위한 기초 C 언어 강좌 #17 : 함수〉, 《티스토리》, 2016-08-18
- ↑ SLL, 〈(C언어) int main, void main, main의 차이점/ main 함수의 파라미터〉, 《네이버블로그》, 2015-10-06
- ↑ 천프로, 〈C언어 void 포인터(void*)〉, 《네이버블로그》, 2019-08-09
참고자료[편집]
- SnowL, 〈초보자를 위한 기초 C 언어 강좌 #17 : 함수〉, 《티스토리》, 2016-08-18
- SLL, 〈(C언어) int main, void main, main의 차이점/ main 함수의 파라미터〉, 《네이버블로그》, 2015-10-06
- 천프로, 〈C언어 void 포인터(void*)〉, 《네이버블로그》, 2019-08-09
같이 보기[편집]