#include <stdio.h>
#include <pthread.h>
#include <sys/time.h>
#include <unistd.h>
#include <string.h>
typedef struct
{
char a[255];
int b;
int c;
}num;
void *hello(void *arg)
{
printf("----传递一个结构体----\n");
num num1= *(num*) arg;
num1.b=9;
// num1.a[]={"hello"};//结构体不能如此赋值,报错,只能strcpy
strcpy (num1.a," zhao ");
num1.c=10;
printf("%d,%d,%s\n",num1.b,num1.c,num1.a);
}
void *test(void *arg)
{
printf("----传递一个字符串-----\n");
printf("%s\n",(char*)arg);
}
int main(int argc,const char* argv[])
{
int err;
num word;
char str[]="name";
pthread_t id1,id2;
err=pthread_create(&id1,NULL,hello,&word);//传递结构体
if(err!=0)
{
printf("ddsafsdf");
}
err=pthread_create(&id2,NULL,test,str);//传递字符串
if(err!=0)
{
printf("ddsafsdf");
}
sleep(1);
return 0;
}
不加sleep的话,进程结束,线程还没有开始。也可以将其换成pthread_join(线程id,NULL);