鱼C论坛

 找回密码
 立即注册
查看: 818|回复: 3

[已解决]c语言

[复制链接]
发表于 2020-3-6 22:58:10 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>

int main()
{
    int n1,n2,n3;
    int *p1,*p2,*p3;
    scanf("%d,%d,%d",&n1,&n2,&n3);
    p1 = &n1;
    p2 = &n2;
    p3 = &n3;
    if(n1>n2)swap(p1,p2);
    if(n1>n3)swap(p1,p3);
    if(n2>n3)swap(p2,p3);
    printf("%d,%d,%d\n",n1,n2,n3);
}
swap(int *p1,int *p2)   //这里的*p1,*p2和上面的*p1,*p2是一样的?或者是在swap函数里重新定义的,与上面无关,只是传值用?
{
    int t;
    t = *p1;
    *p1 = *p2;
    *p2 = t;
}
最佳答案
2020-3-7 00:01:42
本帖最后由 jackz007 于 2020-3-7 00:07 编辑
swap(int *p1 , int *p2)
{
    int t     ;
    t = *p1   ;
    *p1 = *p2 ;
    *p2 = t   ;
}
        p1、p2 出现在函数定义中,是函数 swap() 的输入参数,根据变量的作用域规则,p1 和 p2 仅与出现函数体内部的 p1、p2 有联系,与函数以外的同名变量没有任何关系,比如:
        int a = 8 , b = 80 ;
        swap(& a , & b)    ;
        在此例中,& a、& b 是调用 swap() 函数的实参,& a 取代形参 p1 , & b 取代形参 p2。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-6 23:16:29 | 显示全部楼层
都是指针变量,作用域不同;
名字一样不代码是同一个变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-7 00:01:42 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-3-7 00:07 编辑
swap(int *p1 , int *p2)
{
    int t     ;
    t = *p1   ;
    *p1 = *p2 ;
    *p2 = t   ;
}
        p1、p2 出现在函数定义中,是函数 swap() 的输入参数,根据变量的作用域规则,p1 和 p2 仅与出现函数体内部的 p1、p2 有联系,与函数以外的同名变量没有任何关系,比如:
        int a = 8 , b = 80 ;
        swap(& a , & b)    ;
        在此例中,& a、& b 是调用 swap() 函数的实参,& a 取代形参 p1 , & b 取代形参 p2。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-7 00:17:06 | 显示全部楼层
这里的*p1,*p2和上面的*p1,*p2是一样的?
不一样,性质不一样,一种是变量,一种是参数,顶多类型是一样的,都是int*
在swap函数里重新定义的,与上面无关,只是传值用?
你理解为两个int* 的容器,也就是p1,p2换成a1,a2,也一样有效,名称而已

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
老牛来学习 + 5 + 5 + 3

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 23:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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