一个关于C语言的子函数的形参问题int rollDice(void)
括号里的void是说这个函数不需要参数 。
前面的int是说这个函数返回的是一个int类型的值 。
而worksum正是int类型的值 。
为什么C语言的子函数不直接用型参参与运算,而是另外声明个局部变量,形参再赋值给这个局部变量?【c语言子函数声明用形参 c语言子函数变量】函数的副作用是最令人头疼的问题
我们都知道形参使得函数可以改变调用者的变量值
所以很容易产生副作用
所以函数设计时应当避免频繁改变形参的值
这就是你所看到的现象:“不直接用型参参与运算”
这样就不会改变调用者的变量值
当然最后还是要改变形参的值,否则形参就没有意义了
还有另一个原因是编译有关的
局部变量是在栈分配空间的
生成的机器代码是近调用的短地址
而形参就很难说了
可能有的编译器 , 先按值参处理 , 最后再用结果修改形参
这样做就不用担心“直接用型参参与运算”的会频繁修改形参了
但是却不符合形参的本义
因此编译器会直接引用形参的地址,就会生成远调用的长地址了
把形参编译成长短不同的地址,这在调用系统功能时就有讲究了
你的代码里有“interrupt”字样,我没猜错的话就是中断调用
这时需要长地址还是短地址,那可是一点也不可弄错了
用局部变量就会得到短地址
C语言中函数声明中 的形参问题在main函数之前做函数申明一定没错 。在main函数之前添加这一句float m(int x,float y)
还有,你说的int x,float y这两个参数类型不一样,这是完全允许的;实参在向形参传递参数的时候:实参会按照形参的类型进行转换 。
c语言子函数声明用形参的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于c语言子函数变量、c语言子函数声明用形参的信息别忘了在本站进行查找喔 。
推荐阅读
- 如何将虚拟机文件拷到,将虚拟机文件拷贝到windows
- 易语言数据库mysql源码,易语言 数据源
- html小广告代码,广告js代码
- 路由器怎么设置cmcc,路由器怎么设置wifi密码
- go语言单行注意什么 go语言%t
- 东莞ERP系统软件功能介绍,东莞用友erp软件
- 国内区块链供应链金融发展,分析区块链技术在供应链金融中的应用前景
- 苹果手机怎么连车载电视,苹果手机怎么连车载电视机
- 包含vb.netmono的词条