鱼C论坛

 找回密码
 立即注册
查看: 3107|回复: 7

指针 和 函数

[复制链接]
发表于 2013-11-26 22:23:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ゛落君灬殇丶 于 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 没带有 & * 传进去的是什么  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-27 12:47:09 | 显示全部楼层
把%d%d的中间加一个逗号就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-27 13:13:19 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-27 14:08:42 | 显示全部楼层
゛落君灬殇丶 发表于 2013-11-27 13:13
你没明白我的问题

你的p1 p2是指针 指针不带*默认传递进去的是地址  而你将a 和 b的地址传递给了p1 p2这时候进行swap函数交换 就使他们的值改变了   我也是个新手这个是我个人的看法:titter:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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指向的变量
        
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-27 14:58:11 | 显示全部楼层
本帖最后由 卧室不要床 于 2013-11-27 14:59 编辑
卧室不要床 发表于 2013-11-27 14:57
#include
void swap(int *p_1, int *p_2);    // 这是交换两个变量值的函数


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


改过来了已经,请忽略
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-27 15:34:56 | 显示全部楼层
楼主可以单步调试,仔细看主函数中和swap函数中的指针变量p1和p2的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-27 20:20:14 | 显示全部楼层
″梦里花 发表于 2013-11-27 14:08
你的p1 p2是指针 指针不带*默认传递进去的是地址  而你将a 和 b的地址传递给了p1 p2这时候进行swap函数交 ...

有点理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 10:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表