In your code you define pointer to the two element char array. It does not allocate the memory for that array. If you dereference this pointer it leads to the Undefined Behaviour.
In your code ptr
references the char array. When you *pos[1] you dereference the first element of the second char array not the second character in the array. To access second elements of the array you need to dereference pointer first and then use the index (*pos)[1]
You need to allocate the memory for the characters:
#include <stdio.h>
#include <stdlib.h>
typedef char chessPos[2];
int main(void)
{
chessPos* pos;
pos = malloc(sizeof(*pos));
(*pos)[0] = 'C';
(*pos)[1] = '3';
printf("(*pos)[0] = '%c', (*pos)[1] = '%c'\r\n", (*pos)[0], (*pos)[1]);
}
https://godbolt.org/z/8nPxn3TxE
or simple (without the pointer)
#include <stdio.h>
typedef char chessPos[2];
int main(void)
{
chessPos pos;
pos[0] = 'C';
pos[1] = '3';
printf("pos[0] = '%c', pos[1] = '%c'\r\n", pos[0], pos[1]);
}
https://godbolt.org/z/h6fj7c1Ea