static float area;类型为float ;因为pthread_exit返回值为 void *,相应的area也要转变为 float *,所以为float * &area
pthread_join(id,(void **)&area); 等待线程结束
gcc 文件名 -pthread 连接动态库
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
void *task(void *arg)
{
float *r=(float *)arg;
static float area;
area=3.14*(*r)*(*r);
printf("%f\n",area);
pthread_exit((void*)(&area));
}
int main()
{
pthread_t id;
float *area=NULL;
float t=3;
//创建线程
int res = pthread_create(&id,0,task,(void *)&t);
// int res = pthread_create(&id,0,task,&t); //void *可以接受任何类型的数据
if(res){
printf("%s\n",strerror(res));
//exit(-1);
}
sleep(1);
pthread_join(id,(void **)&area);
printf("%f\n",*area);
return 0;
}