構造体から関数 topTwo に変換された void ポインターを渡しています。キャストバックして構造体からデータを取得しようとすると、代わりにアドレスが取得されます。私は何を間違っていますか?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;
};
データを渡すメイン関数は次のとおりです。
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);
}
}