Еще бы знать, где этот tasks определен и зачем его искать в цикле
постоянно typedef struct {
int num;
} timer_task_t;
timer_task_t timer_task2 = { .num=2, };
timer_task_t* timer_tasks[] = { NULL, NULL, &timer_task2, NULL};
int main()
{
timer_task_t *task = timer_tasks[2];
printf("%i", task->num);
return 0;
}