交换函数返回数组

时间:2019-05-07 02:42:45

标签: c

试图了解指针在返回数组的函数中的工作原理。

当临时数组返回到函数时,为什么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 个答案:

答案 0 :(得分:3)

  

为什么p [0]为1而p [1]为3

不是。

将您的微控制器专用代码替换为:

KeyPressed

并在计算机上运行您的代码可得到以下输出:

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

符合预期。