How to pass a struct value to a pthread in c?

C
struct my_Struct{
	int val1, val2;
};
void* my_Func(void *received_struct){
  	//Creating a pointer to point to the received struct
	struct my_Struct *struct_ptr = (struct my_Struct*) received_struct;
    printf("Value 1: %d | Value 2: % \n", struct_ptr->val1, struct_ptr->val2);
	//Now use 'struct_ptr->val1', 'struct_ptr->val2' as you wish
}
//In main:
		struct my_Struct mystruct_1[n];
		pthread_create(&thread, NULL, my_Func, &mystruct_1[i]);
		//i is the index number of mystruct_1 you want to send
		//n is the total number of indexes you want

//Grepper profile: https://www.codegrepper.com/app/profile.php?id=9192//Runnable example
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

struct my_Struct{
	int index;
	int value;
};
void* my_Func(void *received_struct){
	struct my_Struct *struct_ptr = (struct my_Struct*) received_struct;
    printf("index: %d  |  value: %d \n", struct_ptr->index, struct_ptr->value);
	//Now use 'struct_ptr->index', 'struct_ptr->value' as you wish
}
int main(){
	struct my_Struct mystruct_1[5];
	
	printf("\nEnter 5 numbers:\n");
	for (int i=0; i<5; i++){
		scanf("%d", &mystruct_1[i].value);
		mystruct_1[i].index = i;
	}
	pthread_t tid[5];
	for(int i=0; i<5; i++){
		pthread_create(&(tid[i]), NULL, my_Func, &mystruct_1[i]);
	}
	for (int i=0; i<5; i++){	
		pthread_join(tid[i], NULL);
	}
}
//To run: gcc [C FILE].c -lpthread -lrt
// ./a.out

//Grepper Profile: https://www.codegrepper.com/app/profile.php?id=9192
Source

Also in C: