1422|0

6809

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

有关指针变量作为函数参数 [复制链接]

函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。




  【例10-3】题目同【例10-2】,即输入的两个整数按大小顺序输出。今用函数处理,而且用指针类型的数据作函数参数。




view plaincopy to clipboardprint?
swap(int *p1,int *p2){  
    int temp;  
    temp=*p1;  
    *p1=*p2;  
    *p2=temp;  
}  
main(){  
    int a,b;  
    int *pointer_1,*pointer_2;  
    scanf("%d,%d",&a,&b);  
    pointer_1=&a;pointer_2=&b;  
    if(a
    printf("\n%d,%d\n",a,b);  
}  



  对程序的说明:


  1) swap是用户定义的函数,它的作用是交换两个变量(a和b)的值。swap函数的形参p1、p2是指针变量。程序运行时,先执行main函数,输入a和b的值。然后将a和b的地址分别赋给指针变量pointer_1和pointer_2,使pointer_1指向a,pointer_2指向b。




     2) 接着执行if语句,由于a








  3) 接着执行执行swap函数的函数体使*p1和*p2的值互换,也就是使a和b的值互换。函数调用结束后,p1和p2不复存在(已释放)。






  4) 最后在main函数中输出的a和b的值是已经过交换的值。请注意交换*p1和*p2的值是如何实现的。请找出下列程序段的错误:


view plaincopy to clipboardprint?
swap(int *p1,int *p2){  
    int *temp;  
    *temp=*p1;      /*此语句有问题*/  
    *p1=*p2;  
    *p2=temp;  
}  



请考虑下面的函数能否实现实现a和b互换。




view plaincopy to clipboardprint?
swap(int x,int y){  
    int temp;  
    temp=x;  
    x=y;  
    y=temp;  
}  



  如果在main函数中用“swap(a,b);”调用swap函数,会有什么结果呢?




  【例10-4】请注意,不能企图通过改变指针形参的值而使指针实参的值改变。


view plaincopy to clipboardprint?
swap(int *p1,int *p2){  
    int *p;  
    p=p1;  
    p1=p2;  
    p2=p;  
}  
main(){  
    int a,b;  
    int *pointer_1,*pointer_2;  
    scanf("%d,%d",&a,&b);  
    pointer_1=&a;pointer_2=&b;  
    if(a
    printf("\n%d,%d\n",*pointer_1,*pointer_2);  
}  

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表