EDIT: Что делает его понятным для новичков в теме (в комментариях выше)
Да. Если ваш i-й индекс array1 соответствует 0-му индексу array2. Тогда (i + j) -й индекс массива 1 соответствует индексу (0 + j) th = jth массива2. Другими словами, если вы находитесь в индексе k в массиве 1, вам нужно вычесть i из k, чтобы перейти к соответствующему индексу в array2.
КОНЕЦ EDIT
Что вы имеете в виду «что это значит?»
Для того, чтобы проверить, если array1 равен array2, вы можете перемещаться по одной из строк и проверить характер равенства:
int equals(char *array1, char *array2, int length) {
int i;
for(i = 0; i < length; i++) {
//make sure that the char in array1 is equal
//to the char in array2
if(array1[i] != array2[i])
return 0;
//if array1 is done, then you no longer need
//to check (and you know array2 is done too
//from previous if statement)
if(array1[i] == '\0'
break;
}
return 1;
}
Обратите внимание, что длина должна быть меньше двух длин array1 и массив2 к избегайте плохого доступа к памяти. Вероятно, вы знаете, какой из них будет, но без контекста, я не могу дать более конкретного ответа.
@chux Я знаю, что приятель, я хочу знать, что делает [IJ] = [я] и [ц] = '\ 0' (пустая строка) в смысле непрофессионала. Спасибо –
Этот код, вероятно, используется, чтобы увидеть, содержится ли подстрока в большей строке. Вы сравниваете символ, расположенный в текущем местоположении 'j', с символом, расположенным на символах' i'. – vsoftco
делает [i-j] = [j], если строка массива1 [i-j] равна подстроке другого массива say array2 [j]? @vsoftco –