Нет, не требуется. Согласно C11
, глава §6.3.2.3,
Указатель на void
может быть преобразован в или из указателя на любой тип объекта. Указатель на любой тип объекта может быть преобразован в указатель на void
и обратно; результат должен сравниться с исходным указателем.
Таким образом, в вашем случае
k = &i; // no cast needed
j = k; // again, no cast needed
функционально совпадает с
j = &i;
Здесь не требуется явное приведение.