Qionry 发表于 2018-3-25 09:33:45

求大佬帮我看看哪里错了。。

#include <stdio.h>
int jiaohuan (int a , int b)
{
        int t ;
        t = a;
        a = b;
        b = t;
}
void main()
{
        int a,b,t;
        scanf("%d %d",&a,&b);
        printf("a=%d,b=%d\n",a,b);
        jianhuan (a,b);
        printf("a=%d,b=%d\n",a,b);
}

JessiFly 发表于 2018-3-25 10:19:05

因为你定义的jiaohuan函数返回值是int 类型,一定要有return语句但你的程序没有return。
把int jiaohuan改为void jiaohuan应该就行了。

丶忘却的年少o 发表于 2018-3-25 10:29:08

你把 函数的返回类型换成了 void 后是不是打印出来的 a, b 还是同样的?
传参要传地址jianhuan (&a,&b);
函数的定义就是 void jiaohuan (int *a , int *b)
      int t ;
       t = *a;
       *a = *b;
       *b = t;

idol 发表于 2018-3-25 10:29:54

jiaohuan函数应该传入指针变量。
因为实参是形参的拷贝。想象有一个对手下非常不信任的老板,他的手上的文件是形参,手下的实际操作的文件都是从他手上复印的,因此可以理解成实参。无论手下如何努力修改复印的文件,都不可以改变老板文件内容。如果老板说“把柜子的那个文件改一下”,手下就可以改了。因为他告诉真实文件的地址,手下可以修改真实文件。指针就是这个地址
页: [1]
查看完整版本: 求大佬帮我看看哪里错了。。