|
鎶€鏈枃搴撻椤�
|
缂栫▼
|
IC
|
鏅朵綋绠�
|
绮捐В
|
涓
|
鍏跺畠
|
鐢垫簮
|
鍩虹
|
鐢佃剳
|
鏃犵嚎
|
娑叉櫠
|
寰尝
|
绌鸿皟
|
鎵嬫満
|
|
鐑按鍣�
|
鐢靛姩杞�
|
LED灞�
|
鐒婃満
|
您现在的位置: 华玉生活网 >> 技术文库 >> 基础 >> 正文>> 繁体中文

指针作为函数参数

指针作为函数参数

大多数C程序员开始使用指针时是用它们实现函数的参数,所谓可变参数。为了理解可变参数是如何工作的,我们看看在C语言中如何执行一个交换函数。要执行一个交换函数,您要做的是引入两个变量,让函数交换它们的值。这里是一个执行交换函数的试验——输入并执行以下代码,看看会发生什么:

#include 

void swap(int i, int j)
{int t;t=i;i=j;j=t;}

void main()
{int a,b;a=5;b=10;printf("%d %d
n", a, b);swap(a,b);printf("%d %dn", a, b);}

执行程序后您会发现变量并没有被交换。a和b的值是传入了swap,而且交换函数确实交换了它们。但是函数返回后实际上没有产生任何效果。 要使函数正确工作您可以使用指针,如下所示:

#include 

void swap(int *i, int *j)
{int t;t = *i;*i = *j;*j = t;}
void main()
{int a,b;a=5;b=10;printf("%d %d
n",a,b);swap(printf("%d %dn",a,b);}

为了了解上面代码的工作过程,让我们把它画在纸上。先画出两个方框代表整数a和b,分别在里面填上5和10;再画出指针i和j,还有整数t。swap函数被调用时接受的参数是a和b的地址。所以i指向a(从i到a引一箭头),j指向b(从b到j引另一箭头)。当函数调用完成指针的初始化以后,*i就成为a的另一个名字,*j也成为b的另一个名字。现在开始执行swap的代码。代码中用到的*i和*j其实就是a和b。函数完成时,a和b就被交换了。


程序运行过程示意图

如果您在调用交换函数的时候,不小心忘记了&,使交换行不小心成了这样子:swap(a,b);。这会导致段错误。当您忘记使用&的时候,引入的便是a的值,而不是a的地址。因此,i指向了内存中一个无效的地址,当使用*i的时候系统就会崩溃。

因为同样的原因,如果您在引入的变量中忘记了&,scanf函数也会崩溃。scanf函数使用指针将它读取的值,返回给您引入的变量。没有了&,scanf就引入了一个错误的地址,并导致崩溃。

可变参数是C语言指针最普通的用法之一。


  • 扩展阅读
  • 上一个文章:
  • 【返回网站首页】 【返回基础】
  • 下一个文章:
  • 【字体: 】【】【发表评论】【加入收藏】【告诉好友】【打印此文
    文章 软件 电影 商品

    相关文章

    本站公告

    • 扫一扫,打赏给我们,谢谢!

      本站2016年12月16日起取消ruida.org.cn域名,该域名正式作废,该域名发布任何信息与本站无关。


      启用ruida.orghy928.net域名;

      瑞达网,瑞达科技网宣

    附页内镶内容
    健康养生 商场新品 股市K线、指标知识
    装修案例 网站建设 电器维修
     网页html点击切换显示内容完[11月7日]
     动易SiteWeaver6.6网站管理系[7月31日]
     中国阴历农历JS支持 HTML网页[2月26日]
     java script error 容错处理[2月15日]
     几款还不错的网页特效显示日[2月14日]
     图片可以调大小的代码[12月14日]
     动易SW6.8网站系统改自适应支[11月20日]
     网站建设_套餐服务[12月4日]
     网站建设-费用明细[12月4日]
     不显示出来的代码[12月3日]
     联想 小新Air 14 2019笔记本…[6月15日]
     滚筒洗衣机脱水声音大原因及…[4月17日]
     智能电视不能开机强制恢复出…[1月16日]
     各大品牌智能电视机恢复出厂…[1月16日]
     洗衣机自己排水或不存水漏水…[6月15日]
     海尔冰箱出现-03还滴滴报警[5月29日]
     TCL电视通用教程安装教程[2月2日]
     TCL L43V7300A-3D液晶彩电出…[2月2日]
     先锋液晶电视LED-32B550无光…[1月17日]
     智能电视主板的应用与维修(…[1月11日]
    电器资料 下载 读书
     三个代码让电脑提速畅通秘籍[3月13日]
     视得安750D6对讲门铃工作原理…[9月13日]
     什么是量子芯片和光子芯片[5月14日]
     沃尔沃S90汽车遥控钥匙失灵的…[1月19日]
     LED显示屏瑞合信PLus单双色全…[12月22日]
     Windows 照片查看器无法显示…[8月6日]
     已经设置IE主页,但是打开还…[7月6日]
     如何调整空压机压力?空压机…[6月8日]
     剪映-视频编辑软件手机版使用…[5月28日]
     锂电池保护板作用及同口和分…[3月18日]
     [书籍]滕王阁序_原文_注释译文_白
     [书籍]《天工开物》明代宋应星初
     [电影]《抓娃娃》高清电影
     [联想]Lenovo S540-14API Compl 
     [书籍]《墨子》原文注释译文
     [LED条屏]瑞合信单双色/全彩控制系统
     [LED条屏]LED显示屏瑞合信手机APP6.
     [书籍]全本新注聊斋志异
     [书籍]广西2023年高考指南 招生计
     [书籍]个人防护手册(第二版)
     广西高考2024~2022年历史类([6月25日]
     凤阳花鼓[3月8日]
     《滕王阁序》[3月2日]
     卷一百二十八 艺文_杂记[2月24日]
     卷一百二十七 艺文_杂记[2月24日]
     卷一百二十六 艺文_国朝[2月24日]
     卷一百二十五 艺文_国朝[2月24日]
     卷一百二十四 艺文_五言排律[2月24日]
     卷一百二十三 艺文_历朝[2月24日]
     卷一百二十二 艺文_历朝[2月24日]
    珠宝玉器 在线电视台
     鸡血石与鸡血玉有什么区别[6月12日]
     鸡血玉[6月12日]
     鸡血石 (bloodstone)[6月12日]
     什么是莫桑石(Moissanite)[6月12日]
     可以戴钻石洗澡吗[1月22日]
     钻石如何保养才好呢?[1月22日]
     PT容易花的问题和钻戒保养问…[1月22日]
     切工 钻石的雕刻艺术[1月22日]
     如何保养好钻戒[1月22日]
     钻戒保养方法[1月22日]
     中央体育台
     中央新闻台
     宁夏卫视
     湖北卫视
     西藏卫视
     辽宁卫视
     河北卫视
     北京卫视
     政法频道
     农民频道
     湖南经视
     湖 南 台
     河南频道
     湖南卫视
     兵团卫视
     江苏卫视
     旅游卫视
     湖南都市
     七彩戏剧
     动漫秀场
     游戏风云
     法制天地
     魅力音乐
     新 娱 乐
     南 方 TV
     浙江卫视
     齐鲁频道
     山西影视
     东南卫视
     上海卫视
     贵州电视台
     重庆电视台
     山东卫视
     哪吒之魔童闹海《哪吒2》在线
     《抓娃娃》在线电影
     流浪地球2剧情介绍
     《万里归途》完整版
     《阿凡达2:水之道》耗资3.1
     2021港剧《梅艳芳》5集全.HD
     误杀2 -电影-完整版视频在线
     亲爱的/亲爱的小孩/打拐/家之
     《第一炉香》-电影-完整版视
     《扬名立万》-电影-完整版视
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论

    | 服务声明 | 充值中心| 华安五金电器 | 收费标准| 论坛| 留言| 实用查询| 会员中心| 下载帮助| 设为首页|

    技术支持:瑞达科技 即时交谈QQ:237013889 QQ群:13810759 E-Mail:237013889@qq.com
    非盈利网站,如有侵权,请来信来电告知,第一时间处理,谢谢!
    桂ICP备17008104号 华玉生活网网站统计
    tj