2013-05-20 3 views
0

void 변수는 아무 것도하지 않으며 void 포인터는 캐스팅을 통해서만 지정할 수 있습니다. 그래서 void 포인터는 우리가 실제로 가리키고 싶은 데이터 유형과 위치를 모른다면 사용됩니다. 그러나 무효 변수는 무엇입니까?void 데이터 유형 및 void 포인터의 실제 사용은 무엇입니까?

실용적인 예가 있습니까?

+0

'void v;'를 의미합니까? 그것은 어떤 언어로도 존재하지 않습니다. –

+0

나는 그것의 C와 더 관련이 있다고 생각 C# – Habib

답변

1

는, 실제로 데이터가 없음을 보여주기 위해 데이터 형식의 자리에 자리 표시 자로 사용하는 키워드입니다.

예를 들어, 함수 void f(void);을 고려하십시오. 여기서 키워드 void는 전달 된 매개 변수와 반환 값이 없음을 의미합니다.

그러나 void *ptr;은 의미가 다릅니다.

포인터가 가리키는 데이터 유형을 지정하지 않고 포인터를 선언합니다.

0

void 포인터는 정확한 데이터 유형에 대한 지식이 없을 때 메모리 할당 목적으로 매우 유용합니다. 자신의 malloc을 작성하여 void *의 의미를 얻으십시오.

또는 읽기는 void가 데이터 유형으로 간주 할 수없는 C에서 http://www.cplusplus.com/reference/cstdlib/malloc/

0

마노 토폴 닉 (Topolnik)이 그의 의견에서 말하듯이 변수는 void입니다.

Void 포인터는 C/C++에서 불특정 항목을 가리키는 데 사용됩니다. 키워드는 값을 반환하지 않는 메서드를 표시하는 데에도 사용됩니다 (C# 및 기타 언어). 그래서 나는 당신이 생각하는 생각 :

void method(); 

이 그렇지 않은 유형 void의 뭔가를 반환합니다. 아무것도 반환하지 않습니다.

0

일반 qsort과 같은 일반적인 인터페이스에서 유용합니다.

void 
qsort(void *base, size_t nel, size_t width, 
    int (*compar)(const void *, const void *)); 

http://www.manpagez.com/man/3/qsort/

는 (모든 유형) 전혀 데이터를 반환하지 않기 때문에 void 반환형이 절차가 아닌 함수로서이 식별

. void *은 아무 것도 가리킬 수 있지만, compar 함수를 사용하려면 적절하게 캐스팅해야합니다.

1

void 변수는 없지만 void 포인터가 있습니다. 다른 사람들이 많이 언급 했으므로 void 포인터를 사용하기 전에 캐스트를 입력하라고 상기시키고 싶습니다.

float generic_add(void *n1, void *n2){ 
    return *((int *) n1) + *((float *) n2); 
} 
관련 문제