gpt4 book ai didi

c++ - 将 void 指针转换为结构时无法获取值

转载 作者:行者123 更新时间:2023-11-28 00:57:30 31 4
gpt4 key购买 nike

我正在传递一个从结构转换为函数 topTwo 的空指针。当我将它投回去并尝试从结构中获取数据时,我得到的是地址。我究竟做错了什么?在这个函数中,我试图让 localStruct->number 返回 1 而不是返回地址。

 void  *topTwo(void *p)
{
struct Variables * localStruct;
localStruct= (struct Variables *) p;
cout<<localStruct->number<<endl;
int z = long(localStruct->number);
cout<<z<<endl;
}

这是结构

struct Variables{
int largestNum;
int secondLargestNum;
int number;
};

这里是传入数据的main函数。

int main() 
{
Variables *vars;
vars= new struct Variables();
vars->largestNum=0;
vars->secondLargestNum=0;
vars->number=0;
pthread_t tid[5];
for(int i=0; i<5; i++)
{
vars->number=i;
cout<<vars->number<<endl;
void * sVoid;
sVoid = (void *) &vars;
pthread_create(&tid[i], NULL, topTwo,(void *) sVoid);
pthread_join(tid[i], NULL);
}
}

最佳答案

改变:

sVoid = (void *) &vars;  // this is a `struct Variables**`

到:

sVoid = (void *) vars;

关于c++ - 将 void 指针转换为结构时无法获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10307954/

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