213213131 发表于 2017-12-11 23:55:56

C语言新手求助!!!!

请问各位大神;
#include <stdio.h>
intjiaohuan(int *p1,int *p2);
int a=1,b=2;
int *p1,*p2,*p;
void main ()
{       
        p1=&a;
        p2=&b;
        if(a<b)
        {               
                jiaohuan(p1,p2);
        }
        printf("max=%d,min=%d\n",*p1,*p2);
}
int jiaohuan(int *p1,int *p2)
{               
        p=p1;
        p1=p2;
        p2=p;
        return *p1,*p2;
}
这个得到了结果为什么是错误的?

ba21 发表于 2017-12-12 00:31:06

尽量少用全局变量
#include <stdio.h>
intjiaohuan(int *p1,int *p2);
int a=1,b=2;
int *p1,*p2,*p;
void main ()
{      
      p1=&a;
      p2=&b;
      if(a<b)
      {               
                jiaohuan(p1,p2);
      }
      printf("max=%d,min=%d\n",*p1,*p2);
}
int jiaohuan(int *p1,int *p2)
{      int temp;   //这里定义个临时变量用来暂存要交换的值      
      temp=*p1;
      *p1=*p2;
      *p2=temp;
      // return *p1,*p2;   //交换地址里面的值 不用返回
}

看课程的代码比效易懂:
#include <stdio.h>

void swap(int *a, int *b);

void swap(int *a, int *b)
{
        int temp;

        printf("In swap互换前: a=%d, b=%d\n", *a, *b);
        temp = *a;
        *a = *b;
        *b = temp;

        printf("In swap互换后: a=%d, b=%d\n", *a, *b);

}

int main()
{
        int a = 3, b = 5;

        printf("In main互换前: a=%d, b=%d\n", a, b);
        swap(&a, &b);
        printf("In main互换后: a=%d, b=%d\n", a, b);

        return 0;
}

wjp 发表于 2017-12-12 08:22:07

1.你使用全局变量,就不需要为函数设置参数了,因为全局变量可以在函数中直接使用,你这样做只是把全局变量的值赋值给了函数的参数函数的参数函数结束自动销毁了
2.你函数里面所进行的交换只是交换了两个指针变量的值,并没有交换他们所指向内存的值
3.return不能换回多个值

BngThea 发表于 2017-12-12 08:57:46

不能这样return
页: [1]
查看完整版本: C语言新手求助!!!!