Стоит ли объяснять?
for( ; *s1 != '\0' && *s2 != '\0'; s1++, s2++ ) {
Первый элемент цикла for, перед первым ';'выполняет начальную настройку, здесь ничего не требуется.
Таким образом, цикл for выполняется, пока любой из символов, на которые указывают s1 и s2, не равен нулю.Ноль отмечает конец строки в c и c ++.
Последняя часть цикла for - это то, что нужно делать в каждом цикле - в этом случае указатели s1 и s2 перемещаются так, чтобы указывать на следующий символ в каждой из строк.
if( *s1 != *s2 ) {
return 0;
Если символы, на которые указывают s1 и s2, не совпадают - т. Е. Мы нашли первый различный символ в двух строках, вернем 0, то есть false
return 1;
Если мы дойдем до конца одной из строк и не найдем символов, которые бы отличались, возвращаем 1 - т. Е. True.
Таким образом, функция возвращает true, если строки идентичны или одна строка начинается сдругой, и false - это строки, которые имеют разные символы.