不太理解怎么算的来的。

就是在mooc上面做的一个题目,我写出来的答案是对的,但是我感觉我是蒙出来的,并不理解代码的意思。我把这段代码放在编译器上,但是执行不了,说是有两个错误,我也不知道错哪里了呀。

img

img

img

程序的意思是想交换两个数。swap()函数功能是交换数据。
交换成功了吗,没有。因为调用函数,实参进行临时拷贝。在swap函数中交换了形参,但是实参没有发生变化。
因为swap并没有操作主函数里的,a, b。
改进的话,函数调用要传地址。

换这个用
Visual C++ 2010 Express简体中文版 http://pan.baidu.com/s/1bnwRVLt

img


#include <stdio.h>
void swap(int *a, int *b);
int main()
{
    int a=5,b=6;
    swap(&a,&b);
    printf("%d-%d\n",a,b);//6-5
    return 0;
}
void swap(int *a, int *b)
{
    int t=*a;
    *a=*b;
    *b=t;
}

输出5和6,你的swap函数是传值。并且无返回值,所以swap函数对a和b的任何改变都不会影响main函数中的值。
如果改为传地址,则输出6和5