C语言调用函数指针

图1是我自己写的代码。
图2是老师的代码。
程序是为了实现指针变量值能按大小输出。
对比了老师的代码,发现自己好像写的不是很规范,也好像不对的样子…请问大佬们…这样书写可以吗?

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

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-12
不好的编码规范。
函数声明最好在main函数的前面。

老师的代码定义的swap函数传入的形参是指针变量,是固定的4个字节,比你的代码传值 程序运行更快。
函数只用来实现相应功能,这样才可以实现代码复用,不要在里面写输出语句,这样代码会大大减少复用性。
第2个回答  2019-02-12
首先函数声明放在main函数外,
其次zhizhen调用时,括号内不加*
最后指针函数内部,你的是传入值,你老师的是传入指针
你的zhizhen函数实际上不会交换 ab值,因为传值是传入副本
只有传入指针才会交换
第3个回答  2019-02-12
你的程序实现不了交换的功能,因为:
void zhizhen(int a,int b)
传递的参数int a,int b为值传递,也就是系统会用两个临时变量承载你传递的变量的值,而不会把变量本身传递过去,也就是在函数中的交换行为无法传递到函数调用处。
解决方法有两个,
其一:使用指针,就是你老师的方法
其二:使用引用,也可以实现
第4个回答  2019-02-12

一些建议:

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

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

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

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

相似回答