typedef struct stage_tag {
pthread_mutex_t mutex; /* Protect data */
pthread_cond_t avail; /* Data available */
pthread_cond_t ready; /* Ready for data */
int data_ready; /* Data present */
long data; /* Data to process */
pthread_t thread; /* Thread for stage */
struct stage_tag *next; /* Next stage */
} stage_t;
typedef struct pipe_tag {
pthread_mutex_t mutex; /* Mutex to protect pipe */
stage_t *head; /* First stage */
stage_t *tail; /* Final stage */
int stages; /* Number of stages */
int active; /* Active data elements */
} pipe_t;
int pipe_create (pipe_t *pipe, int stages)
{
int pipe_index;
stage_t **link = &pipe->head, *new_stage, *stage;
int status;
..... //问题在于pipe_create方法。有一个类型为stage_t的双指针,它有三个值......这是什么样的声明?我真的很困惑。
答案 0 :(得分:2)
单个声明语句可以声明多个类型相关的变量(在某种意义上它们仅通过限定而不同):
T **x, *y, z;
与:
相同T **x;
T *y;
T z;
一个有点荒谬的例子:
int main(void)
{
int a = 1, * const b = &a, * const * c = &b;
return a + *b + **c;
}
答案 1 :(得分:0)
在这里,您将创建三个不同的变量。一个是stage_t **
类型link
变量,并将其初始化为& pipe-> head。第二个是stage_t *
类型new_stage
变量,第三个是stage_t *
类型stage
变量。最后两个变量未初始化。