Как связать 2 функции - PullRequest
       4

Как связать 2 функции

0 голосов
/ 22 ноября 2018

Что мне нужно изменить, чтобы change_sequence_2() мог получать информацию от tausche_2()?

void tausche_2 (char *c1, char *c2)
{
    char temp;
    temp = *c1;
    *c1 = *c2;
    *c2 = temp;
}

void change_sequence_2(char *F)
{
    int i, j;
    i = 0;
    j = strlen(F) - 1;
    while (i < j) {
        tausche_2 (F, i, j);
        i = i + 1;
        j = j - 1;
    }
}

1 Ответ

0 голосов
/ 22 ноября 2018

Поскольку ваш 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().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...