我在将结构指针传递给函数时遇到了麻烦,因为我对这些指针和引用有点困惑.我想修改函数的thread.thread_num
值thread_start
.
#include#include //malloc, free #include #define N 5 // void *malloc(size_t); struct thread { pthread_t thread_id; int thread_num; // int thread_sum; }; void *thread_start(void *thread) { struct thread *my_data; my_data = (struct thread *)thread; printf("num T: %i\n", my_data->thread_num); my_data->thread_num=4; printf("num T: %i\n", my_data->thread_num); return NULL; } int main(int argc, char *argv[]) { int i; struct thread pthread_data; struct thread *thread = &pthread_data; thread->thread_num=2; pthread_create(&thread->thread_id, NULL, thread_start, (void *)&thread); printf("num: %i\n",thread->thread_num); pthread_exit(NULL); return 0; }
但打印主体的价值不会改变(2).
然后我想创建一个线程结构数组,但我不知道究竟是怎么做到的:我猜它应该是这样的:
int main(int argc, char *argv[]) { int i; struct thread pthread_data; struct thread *thread[N-1] = &pthread_data; // I don't know how to manage this. for(i=0; ithread_num=i; pthread_create(&thread[i]->thread_id, NULL, thread_start, (void *)&thread[i]); printf("num %i: %i\n",i,thread[i]->thread_num); } pthread_exit(NULL); return 0; }
有什么想法吗?