검수요청.png검수요청.png

"Void"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(개요)
22번째 줄: 22번째 줄:
 
  p = (void*) &n;
 
  p = (void*) &n;
 
위의 예시에서 어떤 포인트건 간에 void*로 형전환을 시켜준다면 모두 넣을 수가 있는, 어찌보면 만능 포인터가 되어버린다. 어떤 자료형이든 주소는 4바이트로 동일하기 때문에 이와 같은 일이 가능하다.  
 
위의 예시에서 어떤 포인트건 간에 void*로 형전환을 시켜준다면 모두 넣을 수가 있는, 어찌보면 만능 포인터가 되어버린다. 어떤 자료형이든 주소는 4바이트로 동일하기 때문에 이와 같은 일이 가능하다.  
 +
 +
==종류==
 +
*'''void main''' : C언어를 하다보면 int main으로 선언하는 사람도 있고 void main으로 선언하는 사람도 있다. 이 둘의 차이는 'return값이 존재하느냐 존재하지 않느냐'의 차이 밖에 없다. 이는 main함수라는 말에서 이유를 알아낼 수 있다. 본래 함수란 return값을 가지고 쓰는 것이 정석과도 같지만 a라는 숫자와 b라는 숫자를 더하는 함수를 만들었다고 가정한다면, 이 함수는 printf()로 a+b값을 찍어내는 것이 아닌 return a+b로 값을 넘겨주는 것이 함수를 쓸 때 올바르게 사용했다고 할 수 있는 것이다.
 +
 +
*'''void*''' :
  
  

2021년 7월 30일 (금) 16:01 판

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로 리턴타입을 선언하였다. 만약 리턴타입이 다르다면 실제 함수의 리턴값도 동일해야하며 예시3은 string이므로 문자열을 리턴해야한다.

char k = 'B';
int n = 5;
void *p = NULL;

p = (void*) &k;
p = (void*) &n;

위의 예시에서 어떤 포인트건 간에 void*로 형전환을 시켜준다면 모두 넣을 수가 있는, 어찌보면 만능 포인터가 되어버린다. 어떤 자료형이든 주소는 4바이트로 동일하기 때문에 이와 같은 일이 가능하다.

종류

  • void main : C언어를 하다보면 int main으로 선언하는 사람도 있고 void main으로 선언하는 사람도 있다. 이 둘의 차이는 'return값이 존재하느냐 존재하지 않느냐'의 차이 밖에 없다. 이는 main함수라는 말에서 이유를 알아낼 수 있다. 본래 함수란 return값을 가지고 쓰는 것이 정석과도 같지만 a라는 숫자와 b라는 숫자를 더하는 함수를 만들었다고 가정한다면, 이 함수는 printf()로 a+b값을 찍어내는 것이 아닌 return a+b로 값을 넘겨주는 것이 함수를 쓸 때 올바르게 사용했다고 할 수 있는 것이다.
  • void* :


각주

참고자료

같이 보기

  검수요청.png검수요청.png 이 Void 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.