Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 创建/分配p_线程数组_C_Arrays_Multithreading_Struct_Pthreads - Fatal编程技术网

C 创建/分配p_线程数组

C 创建/分配p_线程数组,c,arrays,multithreading,struct,pthreads,C,Arrays,Multithreading,Struct,Pthreads,我正在学习C语言中的线程 我试图分配一个p_线程结构数组,以便它们都可以运行一些函数,然后将它们连接在一起 所以我的步骤是: 1.创建指向用户输入的大小不同的pthread结构数组的指针 2.分配pthread结构的数组 3.为每个数组位置创建一个pthread 我的代码: pthread_t * pthreadArray[userInputSize]; pthreadArray = malloc ((sizeof(pthread_t)) * userInputSize); 但我有一个错误:

我正在学习C语言中的线程

我试图分配一个p_线程结构数组,以便它们都可以运行一些函数,然后将它们连接在一起

所以我的步骤是: 1.创建指向用户输入的大小不同的pthread结构数组的指针 2.分配pthread结构的数组 3.为每个数组位置创建一个pthread

我的代码:

pthread_t * pthreadArray[userInputSize];
pthreadArray = malloc ((sizeof(pthread_t)) * userInputSize);
但我有一个错误:

incompatible types when assigning to type 'pthread_t *[(size type)(userInputSize)]' from type 'void *'
谁能澄清一下吗?

行pthread\u t*pthreadary[userInputSize];正在分配大小为userInputSize的pthread指针数组。第二行试图用新分配的指针覆盖它,这不是您的意图。因此,您应该从第一行中删除[]部分。此外,第二行中还有一些错误的括号。像这样修复它:

pthread_t * pthreadArray;
pthreadArray = malloc (sizeof(pthread_t) * userInputSize);
这声明了一个长度为userInputSize的pthread_t*数组。这可能根本不是你想要的。不仅仅是因为userInputSize在编译时是未知的,所以这将是一个可变长度数组VLA

你肯定想这样做:

pthread_t *pthreadArray = malloc(sizeof(pthread_t) * userInputSize);

这使pthread数组的类型为pthread_t*,并将其初始化为数组所需大小的动态分配内存块。

pthread_t*pthread数组[userInputSize];->pthread_t*pthread数组;我知道p_threadcreate在没有错误的情况下返回0,那么如果它只返回0而不是线程或线程id,我如何将数组的每个索引初始化为一个线程,以便在以后加入它们呢?
pthread_t *pthreadArray = malloc(sizeof(pthread_t) * userInputSize);