Хыиуду » 14 дек 2006, 10:09
Указатели - это то, за что я не люблю Си.
В общем, если работать с указателями, то i и j будут не индексами массива, а указателями на эти элементы. Короче, если s^ (не помню, как правильно синтаксически пишется) - указатель на массив s, то он же - указатель на его первый элемент (а по-сишному - нулевой). Соответственно, (s+1)^ - указатель на следующий элемент. Вот идешь, циклически изменяешь один указатель от s до s+length(s)/2, а второй от s+length(s) до s+length(s)/2, и обмениваешь их значения.
Почему указатель должен идти до половины массива, а не по всему массиву (то же, кстати, к индексам относится) - если идти по всему массиву, у тебя он перевернется два раза и примет первоначальный вид. То есть, если в нем 10 элементов, 1-й поменяется с 10-м, 2-й с 9-м, ..., 9-й снова со вторым и 10-й с первым.
Указатели - это то, за что я не люблю Си.
В общем, если работать с указателями, то i и j будут не индексами массива, а указателями на эти элементы. Короче, если s^ (не помню, как правильно синтаксически пишется) - указатель на массив s, то он же - указатель на его первый элемент (а по-сишному - нулевой). Соответственно, (s+1)^ - указатель на следующий элемент. Вот идешь, циклически изменяешь один указатель от s до s+length(s)/2, а второй от s+length(s) до s+length(s)/2, и обмениваешь их значения.
Почему указатель должен идти до половины массива, а не по всему массиву (то же, кстати, к индексам относится) - если идти по всему массиву, у тебя он перевернется два раза и примет первоначальный вид. То есть, если в нем 10 элементов, 1-й поменяется с 10-м, 2-й с 9-м, ..., 9-й снова со вторым и 10-й с первым.