Передача адреса функции и значения не изменились после модификации - PullRequest
0 голосов
/ 03 марта 2019

Вот код:

эта функция предназначена для обратного массива.

void rev(int* nums, int count){

for(int i = 0; i<count; i++){
    int temp = *(nums+i);
    *(nums+i) = *(nums+count-1-i);
    *(nums+count-1-i) = temp;
}
}

эта функция предназначена для реализации функции rev ().

void rotate(int* nums, int numsSize, int k) {
    int*q = nums;
    int count = numsSize - k;
    rev(nums, count);
    q = q+k;

    rev(q, k);
    rev(nums, numsSize);

}

Я передаю адрес массива в rev(), но когда он выходит из цикла for rev(), nums[] не меняется.

что не так с моим кодом?

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Вы в двойном порядке;) Цикл должен остановиться в середине массива

0 голосов
/ 03 марта 2019

Ваш rev() дважды переворачивает массив, что означает, что массив остался оригинальным.

Вы можете решить эту проблему, изменив условие цикла i<count на i<count-1-i.

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