指针 和 函数
本帖最后由 ゛落君灬殇丶 于 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 没带有 & * 传进去的是什么
把%d%d的中间加一个逗号就可以了 yyfishc 发表于 2013-11-27 12:47 static/image/common/back.gif
把%d%d的中间加一个逗号就可以了
{:5_96:}你没明白我的问题 ゛落君灬殇丶 发表于 2013-11-27 13:13 static/image/common/back.gif
你没明白我的问题
你的p1 p2是指针 指针不带*默认传递进去的是地址而你将a 和 b的地址传递给了p1 p2这时候进行swap函数交换 就使他们的值改变了 我也是个新手这个是我个人的看法:titter: 本帖最后由 卧室不要床 于 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:59 编辑
卧室不要床 发表于 2013-11-27 14:57 static/image/common/back.gif
#include
void swap(int *p_1, int *p_2); // 这是交换两个变量值的函数
那个if是如果a<b的值,上面写错了
改过来了已经,请忽略 楼主可以单步调试,仔细看主函数中和swap函数中的指针变量p1和p2的值。 ″梦里花 发表于 2013-11-27 14:08 static/image/common/back.gif
你的p1 p2是指针 指针不带*默认传递进去的是地址而你将a 和 b的地址传递给了p1 p2这时候进行swap函数交 ...
{:5_108:}有点理解
页:
[1]