gpt4 book ai didi

c - 在 pthread_create 中传递 char ***

转载 作者:行者123 更新时间:2023-11-30 19:06:54 26 4
gpt4 key购买 nike

(这是短代码)

pthread_create 上的 char** 运行良好。

int main()
{
char *data[RO] = { /*texts*/ };

pthread_t thread_t;
int status;

if (pthread_create(&thread_t, NULL, pthreadM, (void *)data) < 0)
{
perror("thread create error:");
exit(0);
}
pthread_join(thread_t, (void **)&status);
printf("Thread End %d\n", status);
return 1;
}

void *pthreadM (void* data)
{
char **_data = (char **)data;
print_number(_data[i]);
}

但是在哪个id下面刚刚添加*,char***会出错。为什么会出现这种情况?

char *data[][]= ~

if (pthread_create(&thread_t, NULL, pthreadM, (void *)data) < 0)
{
perror("thread create error:");
exit(0);
}
void *pthreadM (void* data)
{
char ***_data = (char ***)data;
print_number(_data[1][i]);
}

这是 print_number()

void print_number(const char *data)
{
printf("%s", data);
}

最佳答案

假设数据类似于

char *data[X][Y] = { { "abc", "def", ... }, ... };

data 作为 (void *) data 传递给 pthread_create,就像您所做的那样。

在线程体中,对于这样一个复杂的对象,制作一个指向原始类型的指针可能会更容易、更安全,比如

void *mythread(void *p) {
char *(*pd)[][Y] = p;

像这样使用它

  (*pd)[0][1] = "hello";

关于c - 在 pthread_create 中传递 char ***,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47449240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com