C语言调用函数指针 70

图1是我自己写的代码。图2是老师的代码。程序是为了实现指针变量值能按大小输出。对比了老师的代码,发现自己好像写的不是很规范,也好像不对的样子…请问大佬们…这样书写可以吗?... 图1是我自己写的代码。
图2是老师的代码。
程序是为了实现指针变量值能按大小输出。
对比了老师的代码,发现自己好像写的不是很规范,也好像不对的样子…请问大佬们…这样书写可以吗?
展开
 我来答
cdyzxy
2019-02-12 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3721万
展开全部

并不是不规范的问题,你子程序写法只能在子程序中输出正确的数据,而在主函数中无法得到交换过的x和y的值。参考程序运用指针让子程序去读写a和b的值,在子程序执行完成后,a和b的值确实得到了交换。

你的程序中子程序采用的不是指针类型参数,这样子程序无法将交换过后的值传回来。

食链发布
2019-02-12 · 食用农产品和食品信息化追溯平台
食链发布
采纳数:18 获赞数:207

向TA提问 私信TA
展开全部
不好的编码规范。
函数声明最好在main函数的前面。

老师的代码定义的swap函数传入的形参是指针变量,是固定的4个字节,比你的代码传值 程序运行更快。
函数只用来实现相应功能,这样才可以实现代码复用,不要在里面写输出语句,这样代码会大大减少复用性。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
串串的软软
2019-02-12 · TA获得超过2926个赞
知道大有可为答主
回答量:1366
采纳率:85%
帮助的人:566万
展开全部
首先函数声明放在main函数外,
其次zhizhen调用时,括号内不加*
最后指针函数内部,你的是传入值,你老师的是传入指针
你的zhizhen函数实际上不会交换 ab值,因为传值是传入副本
只有传入指针才会交换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zcy990718
2019-02-12 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.2万
采纳率:66%
帮助的人:1527万
展开全部
你的程序实现不了交换的功能,因为:
void zhizhen(int a,int b)
传递的参数int a,int b为值传递,也就是系统会用两个临时变量承载你传递的变量的值,而不会把变量本身传递过去,也就是在函数中的交换行为无法传递到函数调用处。
解决方法有两个,
其一:使用指针,就是你老师的方法
其二:使用引用,也可以实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-02-12
展开全部

一些建议:

  1. zhizhen函数声明应该放在main()外面,并且是在main()前面,因为C语言是顺序执行,执行main()前它必须要知道zhizhen这个函数已经存在;

  2. 实际上你的zhizhen函数执行完了,a和b并不会交换。因为参数不是指针时,传入的只是一个值,是一个副本,对于main里的ab并没有影响,而你这个看起来结果相同是因为你的输出printf写在了zhizhen里。一般学习指针就是要让你知道指针对外部的影响。

  3. 尽量不要用拼音作为函数名,变量名。

  4. 指针还需要继续加深,数据都是存储在内存中,指针*p取的是里面的数据,就是值,而指针的地址就是p是取的地址。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式