问题描述
- 为什么视频上这个代码输出的是1 2,我自己运行输出的是2 1?
- int main()
{
int a=1;
int b=2;
swap(ab);
printf(""%d %d""ab);
}
void swap(int a int b)
{
int t=a;a=b;b=t;
}
解决方案
下断点调试了下,swap(ab);根本没有执行你定义的那个,而是系统标准库的那个,所以交换成功了。
解决方案二:
如果在使用之前声明了swap函数,两个数字也不会交换的,因为是传的值,而不是地址。
解决方案三:
可以提前把swap函数声明一下
解决方案四:
你子函数没有声明,主函数运行到调用子函数那一句便会出错,提示没有定义swap()函数。
不管使用函数还是变量,都必须先声明后使用,这是原则。
所以如果不声明swap函数,这个程序是不能通过编译的,至少在VS2010,VC6.0,DeVC++这三个编译器上面不能通过编译(我都试过啦)。
时间: 2024-09-17 04:18:45