Функция подкачки, возвращающая массив - PullRequest
0 голосов
/ 07 мая 2019

Попытка понять, как работает указатель в функции, которая возвращает массив.

Когда временный массив возвращается в функцию, почему p [0] равно 1, а p [1] равно 3? Поскольку переменные x и y меняются местами внутри функции, а temp [0] и temp [1] не меняются местами.

int *swap(int *x, int *y){
  static int temp[2];

  temp[0] = *x; 
  temp[1] = *y;
  *x = temp[1];
  *y = temp[0];
  return temp;
}


int main() {

  int x = 3;
  int y = 1;
  int *p = swap(&x, &y);
    GPIO_PORTF_AHB_DATA_BITS_R[LED_RED] = LED_RED;//turn on red led
    delay(p[0]);

    GPIO_PORTF_AHB_DATA_BITS_R[LED_RED] = 0;//turn off red led
    delay(p[1]);

  }

1 Ответ

3 голосов
/ 07 мая 2019

почему p [0] равно 1, а p [1] равно 3

Это не так.

Замена кода, специфичного для вашего микроконтроллера, на:

printf("p[0] = %d, p[1] = %d\n", p[0], p[1]);

и запуск вашего кода на компьютере дает мне вывод:

p[0] = 3, p[1] = 1

, как и ожидалось.

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