我需要将多个参数传递给要在单独线程上调用的函数。我已经读到,执行此操作的典型方法是定义一个struct,向该函数传递一个指向该struct的指针,然后将其取消引用以用作参数。但是,我无法使它正常工作:#include <stdio.h>#include <pthread.h>struct arg_struct { int arg1; int arg2;};void *print_the_arguments(void *arguments){ struct arg_struct *args = (struct arg_struct *)args; printf("%d\n", args -> arg1); printf("%d\n", args -> arg2); pthread_exit(NULL); return NULL;}int main(){ pthread_t some_thread; struct arg_struct args; args.arg1 = 5; args.arg2 = 7; if (pthread_create(&some_thread, NULL, &print_the_arguments, (void *)&args) != 0) { printf("Uh-oh!\n"); return -1; } return pthread_join(some_thread, NULL); /* Wait until thread is finished */}输出应为:57但是当我运行它时,我实际上得到了:141921115-1947974263有人知道我在做什么错吗?
3 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
因为你说
struct arg_struct *args = (struct arg_struct *)args;
代替
struct arg_struct *args = arguments;
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
使用
struct arg_struct *args = (struct arg_struct *)arguments;
代替
struct arg_struct *args = (struct arg_struct *)args;
呼唤远方
TA贡献1856条经验 获得超11个赞
main()有自己的线程和堆栈变量。为堆中的“ args”分配内存或使其成为全局内存:
struct arg_struct {
int arg1;
int arg2;
}args;
//declares args as global out of main()
然后,当然,改变从引用args->arg1到args.arg1等。
- 3 回答
- 0 关注
- 610 浏览
添加回答
举报
0/150
提交
取消