You should put newlines after your debug strings.
You don't need to cast the return value of malloc in C. If your compiler complains then you are actually compiling as C++.
Instead of using the type for sizeof you can use the variable itself (this doesn't require the parentheses and, along with the last point, allows the type to be changed more easily).
Instead of the meaningless "TEST", why not "SIZE"?
Instead of the generic "ptrArray", why not "people"?
You can make your typedef identifier the same as the struct tag. And if you make a typedef, then you should probably use it.
Your use of scanf looks a little weird. Does your input actually contain the words "Vornamen" and "Nachnamen" or do you want those to be prompts? If they are prompts then you need to print them with printf.
In the code below I've used scanf with %s as you did. I "hard-coded" the maximum string size, which will have to be changed if MAXNAME is changed (it should be one less). There are better ways to do this but they require a little more code.
Code:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 3
#define MAXNAME 64
typedef struct Person {
char first[MAXNAME];
char last[MAXNAME];
int age;
} Person;
int main() {
Person **people = malloc(SIZE * sizeof *people);
for (int i = 0; i < SIZE; i++) {
people[i] = malloc(sizeof **people);
people[i]->age = i;
printf("First name: ");
scanf("%63s", people[i]->first);
printf("Last name: ");
scanf("%63s", people[i]->last);
}
for (int i = 0; i < SIZE; i++)
printf("%s %s %d\n", people[i]->first, people[i]->last,
people[i]->age);
for (int i = 0; i < SIZE; i++)
free(people[i]);
free(people);
return 0;
}