试图了解指针在返回数组的函数中的工作原理。
当临时数组返回到函数时,为什么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]);
}
答案 0 :(得分:3)
为什么p [0]为1而p [1]为3
不是。
将您的微控制器专用代码替换为:
KeyPressed
并在计算机上运行您的代码可得到以下输出:
printf("p[0] = %d, p[1] = %d\n", p[0], p[1]);
符合预期。