编写一个“交换两个整形变量的函数”
错误代码:
#include<stdio.h>
void exchange (int,int);
void exchange(int one,int another){
int tmp;
tmp = one;
one = another;
another = tmp;
}
int tmp;
tmp = one;
one = another;
another = tmp;
}
int main() {
int num1;
int num2;
printf("请输入两个数:");
scanf("%d%d", &num1, &num2);
exchange(num1, num2);
printf("交换结果:%d %d\n", num1, num2);
return 0;
}
int num1;
int num2;
printf("请输入两个数:");
scanf("%d%d", &num1, &num2);
exchange(num1, num2);
printf("交换结果:%d %d\n", num1, num2);
return 0;
}
定义一个exchange函数如上,利用tmp中间量作为桥梁,交换num1和num2;但事实上这样子的做法并不能正真交换。
在程序运行时,局部变量num1,num2分别从右向左进入系统堆栈空间,此时初始栈顶指针指向主函数现场信息(关于主函数现场信息后续会解释),接着形参o