一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 2690|回复: 4

[其他综合] 请教关于C语言中指针的问题

[复制链接]
发表于 2012-10-10 09:38 | 显示全部楼层 |阅读模式
下面是《C语言完全手册》上的一个例子,作用是将输入的三个数X,Y,Z排序从小到大输出
#include<stdio.h>
int  exchange(int *p1,int *p2, int *p3)
{
    if(*p1>*p2)
    swap(p1,p2) ;
    if(*p2>*p3)
    swap(p2,p3);
    if(*p1>*p2)
    swap(p1,p2);
   
}
int swap(int *a,int *b)
{
    int t;
    t=*a;
    *a=*b;
    *b=t;
}
int main()
{
    int  x,y,z;
    scanf("%d,%d,%d",&x,&y,&z);
    exchange(&x,&y,&z);
    printf("%d,%d,%d\n",x,y,z);
    getchar();
    return 0;
}
我的疑问是在exchange函数中的swap(p1,p2);swap(p2,p3)是不是应该写成swap(&p1,&p2) ;swap(&p1,&p2)
发表于 2012-10-10 10:23 | 显示全部楼层
int  exchange(int *p1,int *p2, int *p3)
传递过来已经是指针了,再加【&】,就是指针的指针了,这个程序不需要【swap(&p1,&p2)】,
这种问题你做过实验数据对比,思考过先啊
回复

使用道具 举报

发表于 2012-10-10 10:28 | 显示全部楼层
int main()里面xyz是数据变量类型,所以加了【&】当做指针传递到Eint  exchange(int *p1,int *p2, int *p3)

exchange里面的P1,P2是一个指针变量,

或者你在代码中,注解好这个参数是什么类型的,作用是什么,这个是编程的好习惯,不然,以后你自己编写代码的思路连自己都不知道了。
回复

使用道具 举报

发表于 2012-10-10 10:30 | 显示全部楼层
定义int swap(int *a,int *b)参数是指针,调用也就直接写指针,在对指针取地址就不对了。
回复

使用道具 举报

 楼主| 发表于 2012-10-10 17:31 | 显示全部楼层
谢谢俩位!因为是自学的,很多都不明白。
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-4 00:51 , Processed in 0.030215 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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