Массив, объявленный как этот
char name[20][20];
, используемый в выражениях, например, в качестве инициализатора, неявно преобразуется в указатель на его элемент firs, который имеет тип char ( * )[20]
.
. Вы можете написать, например,
char ( *s )[20] = name;
. В этом случае, например, для обхода символьных элементов массива, на который указывает указатель s, необходимо использовать выражения типа
( *s )[0], ( *s )[1], an so on
или как
s[0][0], s[0][1], and so on.
Проще будет проходить массивы заостренных символов, если указатель будет объявлен как
char *s = name[0];
char *t = name[1];
и т. Д.
То есть вы должны объявлять указатели как
char ( *s )[20] = name;
char ( *t )[20] = name + 1;
или как
char *s = name[0];
char *t = name[1];