Поскольку ваш tausche_2()
принимает два параметра в качестве указателей и разыменовывает их, он работает со значениями по адресам, которые вы ему передаете.В настоящее время вы пытаетесь передать 3 параметра, причем только один из них является указателем.Правильный способ вызвать его из change_sequence_2()
:
tausche_2(&F[i], &F[j]); // I use the address-of operator to make clear for you,
// that this will pass the adresses of the elements at
// position `i` and `j`.
В качестве альтернативы можно добавить смещения i
и j
к F
:
tausche_2(F + i, F + j); // to get the same addresses.
Intausche_2()
переданные указатели разыменовываются с помощью *
:
temp = *c1; // assigns temp the value pointed to by c1
*c1 = *c2; // assigns the value pointed to by c1 the value pointed to by c2
*c2 = temp; // assigns the value pointed to by c2 the value of temp
, поэтому tausche_2()
при вызове, как указано выше, эффективно воздействует на память, указанную параметром char *F
из change_sequence_2()
.