Void 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
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]]이므로 문자열을 리턴해야 한다.  
+
위에 예시1 처럼 output()은 인자도 없고 반환값도 없는 함수로 선언되었으며 이런 형식으로 굉장히 자주 선언하게 된다. 하지만 void가 포인터가 된다면 뜻이 정반대로 바뀌게 된다. 또한 예시2 함수 test()는 void로 리턴타입을 선언하였다. 만약 리턴타입이 다르다면 실제 함수의 리턴값도 동일해야하며 예시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*]]로 형전환을 시켜준다면 모두 넣을 수가 있는, 어찌보면 만능 포인터가 되어버린다. 어떤 자료형이든 주소는 4[[바이트]]로 동일하기 때문에 이와 같은 일이 가능하다.<ref>SnowL, 〈[https://studyc.tistory.com/21 초보자를 위한 기초 C 언어 강좌 #17 : 함수]〉, 《티스토리》, 2016-08-18</ref>
+
위의 예시에서 어떤 포인트건 간에 void*로 형전환을 시켜준다면 모두 넣을 수가 있는, 어찌보면 만능 포인터가 되어버린다. 어떤 자료형이든 주소는 4바이트로 동일하기 때문에 이와 같은 일이 가능하다.<ref>SnowL, 〈[https://studyc.tistory.com/21 초보자를 위한 기초 C 언어 강좌 #17 : 함수]〉, 《티스토리》, 2016-08-18</ref>
  
 
==종류==  
 
==종류==  
*'''[[보이드 메인]]'''(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 main) : C언어를 하다보면 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 pointer) : 보이트 포인터는 포인터이다. 포인터는 변수이며 주소 값을 갖는 변수이다. 따라서 void포인터도 주소 값을 담는 변수이다. int포인터는 int형 변수의 주소를 저장하고 void포인터는 어떤 타입으로든 형변환이 가능하다.<ref>천프로, 〈[https://blog.naver.com/sharonichoya/220501081810 C언어 void 포인터(void*)]〉, 《네이버블로그》, 2019-08-09</ref>
+
*'''보이드 포인터'''(void point) : 보이트 포인터는 포인터이다. 포인터는 변수이며 주소값을 갖는 변수이다. 따라서 void포인터도 주소값을 담는 변수이다. int포인터는 int형 변수의 주소를 저장한고 void포인터는 어떤 타입으로든 형변환이 가능하다.<ref>천프로, 〈[https://blog.naver.com/sharonichoya/220501081810 C언어 void 포인터(void*)]〉, 《네이버블로그》, 2019-08-09</ref>
  
 
{{각주}}
 
{{각주}}
36번째 줄: 36번째 줄:
  
 
== 같이 보기 ==
 
== 같이 보기 ==
* [[보이드 메인]]
 
* [[보이드 포인터]]
 
* [[씨언어]]
 
* [[return]]
 
  
 
{{프로그래밍|검토 필요}}
 
{{프로그래밍|검토 필요}}

위키원에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 위키원:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)