2012-10-11 2 views
0
내가 C 프로그래밍 적이없는

, 그래서 사람이 구조를 무엇을 말해 줄 수주십시오 (무효 * 자체) 수행C funcname에

void funcName(void * self) 
{ ... } 

를 지금까지 내가 가 funcname에가 알 수없는 포인터를 수신 이해로 데이터와이 기능은 아무것도에게

을받지 않습니다하지만 무효 * 자기

+4

다음 내용을 읽어 보시기 바랍니다. http://stackoverflow.com/questions/692564/concept-of-void-pointer-in-c-programming –

답변

4

가있는 이유는 무효 포인터를받는 함수입니다 - 특정 유형이없는 포인터. Void 포인터 유형을 사용하면 모든 데이터 유형에 대한 포인터를 이와 같이 선언 된 함수에 전달할 수 있습니다. 함수는 데이터를 읽거나 쓰기 전에 포인터를 적절한 형식으로 캐스팅하거나 포인터를 void*을 사용하는 다른 함수로 전달해야합니다.

모든 포인터는 암시 적으로 또는 명시 적으로 void*으로 캐스팅 할 수 있습니다.

int *ptr = malloc(100*sizeof(int)); 
funcName(ptr); // No error 

그런 다음 다른 포인터 유형과 동일한 기능을 호출 할 수 있습니다 :

struct mystruct_t *ptr = malloc(100*sizeof(mystruct_t)); 
funcName(ptr); // Again, no error 

포인터, self의 이름에서 판단, 그것은 가능성이 예를 들어,이 같은 funcName를 호출 할 수 있습니다 함수가 C에서 사용할 수있는 구조체를 사용하여 객체 지향 스타일 프로그래밍을 에뮬레이트하려고합니다. 포인터가 데이터에 암묵적으로 전달되는 대신 멤버 함수가 데이터에 대한 포인터를 명시 적으로 전달합니다. 포인터는 종종 this 또는 self이라고합니다.