゛落君灬殇丶 发表于 2013-11-26 22:23:05

指针 和 函数

本帖最后由 ゛落君灬殇丶 于 2013-11-26 22:24 编辑

#include <stdio.h>
void swap(int *p_1, int *p_2);


int main()
{
      int a, b, *p1, *p2;
      scanf("%d%d",&a, &b);
      p1 = &a;
      p2 = &b;
      
      if (*p1 < *p2)
      {
                swap(p1,p2);//如果输入的第二数比第一个大那么进入对调函数
      }
      printf("max = %d min = %d\n",a ,b);
}


//对调函数
void swap(int *p_1, int *p_2)
{
      int temp;
      
      
      temp = *p_1;
      *p_1 = *p_2;
      *p_2 = temp;
      
}


printf("max = %d min = %d\n",a ,b);为什么执行了 printf 之后的 a,b 满足条件进入函数后出来 a b的值怎么就对换了
代码在哪里对a, b的值进行了对换求详细过程。。。想不通!还有函数传递进去的 p1 p2 没带有 & * 传进去的是什么

yyfishc 发表于 2013-11-27 12:47:09

把%d%d的中间加一个逗号就可以了

゛落君灬殇丶 发表于 2013-11-27 13:13:19

yyfishc 发表于 2013-11-27 12:47 static/image/common/back.gif
把%d%d的中间加一个逗号就可以了

{:5_96:}你没明白我的问题

″梦里花 发表于 2013-11-27 14:08:42

゛落君灬殇丶 发表于 2013-11-27 13:13 static/image/common/back.gif
你没明白我的问题

你的p1 p2是指针 指针不带*默认传递进去的是地址而你将a 和 b的地址传递给了p1 p2这时候进行swap函数交换 就使他们的值改变了   我也是个新手这个是我个人的看法:titter:

卧室不要床 发表于 2013-11-27 14:57:13

本帖最后由 卧室不要床 于 2013-11-27 14:58 编辑

#include <stdio.h>
void swap(int *p_1, int *p_2);    // 这是交换两个变量值的函数


int main()
{
      int a, b, *p1, *p2;                   // p1和p2是指针
      scanf("%d%d",&a, &b);
      p1 = &a;                              // p1指向了a
      p2 = &b;                              // p2指向了b

      
      if (*p1 < *p2)             // 如果a<b
      {
                // 交换a和b 的值
                swap(p1,p2);//如果输入的第二数比第一个大那么进入对调函数
      }
      printf("max = %d min = %d\n",a ,b);   // 输出a,b的值,最大值总是a,最小值总是b
                                                                     // 因为上面只要出现a<b,都把数值交换了
}


//对调函数
void swap(int *p_1, int *p_2)
{
      int temp;
      
      
      temp = *p_1;       // 把p_1指向的变量的值赋给temp
      *p_1 = *p_2;      // 把p_2指向的变量的值赋给p_1指向的变量
      *p_2 = temp;      // 把temp的值赋给p_2指向的变量
      
}

卧室不要床 发表于 2013-11-27 14:58:11

本帖最后由 卧室不要床 于 2013-11-27 14:59 编辑

卧室不要床 发表于 2013-11-27 14:57 static/image/common/back.gif
#include
void swap(int *p_1, int *p_2);    // 这是交换两个变量值的函数



那个if是如果a<b的值,上面写错了


改过来了已经,请忽略

小亮1201 发表于 2013-11-27 15:34:56

楼主可以单步调试,仔细看主函数中和swap函数中的指针变量p1和p2的值。

゛落君灬殇丶 发表于 2013-11-27 20:20:14

″梦里花 发表于 2013-11-27 14:08 static/image/common/back.gif
你的p1 p2是指针 指针不带*默认传递进去的是地址而你将a 和 b的地址传递给了p1 p2这时候进行swap函数交 ...

{:5_108:}有点理解
页: [1]
查看完整版本: 指针 和 函数