linux中多线程参数问题

新手在w3cschool简单的学了下pthread,复制了这样的代码到Linux

#include
#include
#include
using namespace std;
#define NUM_THREADS 5
void PrintHello(void *threadid)
{

// 对传入的参数进行强制类型转换,由无类型指针变为整形数指针,然后再读取
int tid = *((int
)threadid);
cout << "Hello w3cschool!线程 ID, " << tid << endl;
pthread_exit(NULL);
}

int main ()
{
pthread_t threads[NUM_THREADS];
int indexes[NUM_THREADS];// 用数组来保存i的值
int rc;
int i;
for( i=0; i < NUM_THREADS; i++ ){

cout << "main() : 创建线程, " << i << endl;
indexes[i] = i; //先保存i的值
// 传入的时候必须强制转换为void* 类型,即无类型指针

rc = pthread_create(&threads[i], NULL,
PrintHello, (void *)&(indexes[i]));
if (rc){
cout << "Error:无法创建线程," << rc << endl;
exit(-1);
}
}
pthread_exit(NULL);
}

按理来说运行结果应该是
main() : 创建线程, 0
main() : 创建线程, 1
main() : 创建线程, 2
main() : 创建线程, 3
main() : 创建线程, 4
Hello w3cschool! 线程 ID, 4
Hello w3cschool! 线程 ID, 3
Hello w3cschool! 线程 ID, 2
Hello w3cschool! 线程 ID, 1
Hello w3cschool! 线程 ID, 0

但我的运行结果是
main() : 创建线程, 0
main() : 创建线程, 1
main() : 创建线程, 2
main() : 创建线程, 3
main() : 创建线程, 4
Hello w3cschool!线程 ID, 0
Hello w3cschool!线程 ID, 642005376
Hello w3cschool!线程 ID, 4196480
Hello w3cschool!线程 ID, 0
Hello w3cschool!线程 ID, 0

每次的数字还不一样,想问问为什么

https://blog.csdn.net/weixin_33734785/article/details/89820843