void * 类型函数参数
void * typed function parameter
我有一个功能,void *Client(void *threaData){}
你能告诉我一些关于 void *threadData
参数的事情吗?当你使用 void *
参数时,为什么?
假设您想将一个整数传递给 void *Client(void *threadData){}
函数,那么您会
int integer;
integer = SOME_VALUE;
Client(&integer);
在函数中
void *Client(void *threadData)
{
int value;
value = *(int *)threadData;
}
并且由于 void *
可以转换为任何指针类型,您可以将需要的任何数据传递给 Client()
函数。
void *
是一个通用指针,可以指向任何对象类型。上面的函数可以接受指向任何类型的指针,并且可以 return 指向任何类型的指针。
如果不确定用户输入数据的数据类型,可以使用通用指针。
示例:如果用户输入有关数据类型的信息,以下函数将打印任何数据类型
void funct(void *a, int z)
{
if(z==1)
printf("%d",*(int*)a); // If user inputs 1, then it means the data is an integer and type casting is done accordingly.
else if(z==2)
printf("%c",*(char*)a); // Typecasting for character pointer.
else if(z==3)
printf("%f",*(float*)a); // Typecasting for float pointer
}
我有一个功能,void *Client(void *threaData){}
你能告诉我一些关于 void *threadData
参数的事情吗?当你使用 void *
参数时,为什么?
假设您想将一个整数传递给 void *Client(void *threadData){}
函数,那么您会
int integer;
integer = SOME_VALUE;
Client(&integer);
在函数中
void *Client(void *threadData)
{
int value;
value = *(int *)threadData;
}
并且由于 void *
可以转换为任何指针类型,您可以将需要的任何数据传递给 Client()
函数。
void *
是一个通用指针,可以指向任何对象类型。上面的函数可以接受指向任何类型的指针,并且可以 return 指向任何类型的指针。
如果不确定用户输入数据的数据类型,可以使用通用指针。
示例:如果用户输入有关数据类型的信息,以下函数将打印任何数据类型
void funct(void *a, int z)
{
if(z==1)
printf("%d",*(int*)a); // If user inputs 1, then it means the data is an integer and type casting is done accordingly.
else if(z==2)
printf("%c",*(char*)a); // Typecasting for character pointer.
else if(z==3)
printf("%f",*(float*)a); // Typecasting for float pointer
}