直接上代码:
#include<pthread.h>
#include<stdio.h> struct val{
int num1;
int num2;
}; //send a int to arg
void *text(void *arg)
{
int *p = (int *)arg;
printf("arg is %d\n",*p);
pthread_exit(NULL);
} //send char to arg
void *text2(void *arg)
{
char *d = (char *)arg;
printf("arg is %s\n",arg);
pthread_exit(NULL);
} //send a struct to arg
void *text3(void *arg)
{
struct val *v = (struct val *)arg;
printf("arg is v.num1:%d,v.num2:%d\n",v->num1,v->num2);
pthread_exit(NULL);
} int main()
{
pthread_t pth;
char val[] = "i am arg.";
int arry = ;
pthread_create(&pth, NULL, text,(void *)&arry);
pthread_join(pth, NULL); pthread_create(&pth, NULL, text2, (void *)val);
pthread_join(pth, NULL); struct val v;
v.num1 = ;
v.num2 = ;
pthread_create(&pth, NULL, text3, (void *)&v); //一定要用&v因为结构体是值类型;
pthread_join(pth, NULL); return ;
}
结果如下:
每次传递的时候,都需要转化成void,接收之后,再由void转换成自己需要的类型!