C 读取文件和线程的函数中的分段错误

C 读取文件和线程的函数中的分段错误,c,multithreading,segmentation-fault,filereader,C,Multithreading,Segmentation Fault,Filereader,我在编写将传递给pthread_create的函数时遇到问题。该函数有两个参数。我打电话的时候犯了一个错误 和pthread_创建: pthread_create(&tid_array[i], NULL, searchForWord(argv[i + 2], word), &wData[i]); 传递给pthread_create的函数能否接受void*以外的其他参数?pthread_create以函数指针的形式接受启动例程 表达式searchForWord(argv[i+2]

我在编写将传递给pthread_create的函数时遇到问题。该函数有两个参数。我打电话的时候犯了一个错误

和pthread_创建:

pthread_create(&tid_array[i], NULL, searchForWord(argv[i + 2], word), &wData[i]);

传递给pthread_create的函数能否接受void*以外的其他参数?

pthread_create以函数指针的形式接受启动例程

表达式
searchForWord(argv[i+2],word)
不是函数指针;它在当前线程中调用searchForWord,该线程总是返回NULL,然后将NULL传递给pthread_create


线程启动函数必须获取指向void参数的指针,但您可以自由创建一个结构,将指向该结构的指针传递到函数中。您将得到一个指向void的指针,您可以将它转换为指向结构的指针

pthread_create采用函数指针形式的启动例程

表达式
searchForWord(argv[i+2],word)
不是函数指针;它在当前线程中调用searchForWord,该线程总是返回NULL,然后将NULL传递给pthread_create


线程启动函数必须获取指向void参数的指针,但您可以自由创建一个结构,将指向该结构的指针传递到函数中。您将得到一个指向void的指针,您可以将它转换为指向结构的指针

@hello no,您应该传递一个函数指针:
searchForWord
本身就是语法。您需要使用pthread_create提供的void pointer参数传递
argv[i+2]
。@helloworld,听起来您可能需要进一步学习
searchForWord
是一个表达式。它的值是一个常量——指向searchForWord函数的指针,这是要传递给
pthread\u create
searchForWord(argv[i+2],word)
是一个复合表达式,由表达式
searchForWord
argv[i+2]
word
组成。它的值是在运行时通过调用searchForWord函数来计算的。@您好,不,您应该传递一个函数指针:
searchForWord
本身就是语法。您需要使用pthread_create提供的void pointer参数传递
argv[i+2]
。@helloworld,听起来您可能需要进一步学习
searchForWord
是一个表达式。它的值是一个常量——指向searchForWord函数的指针,这是要传递给
pthread\u create
searchForWord(argv[i+2],word)
是一个复合表达式,由表达式
searchForWord
argv[i+2]
word
组成。它的值在运行时通过调用searchForWord函数来计算。