c语言子函数声明用形参 c语言子函数变量

一个关于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语言子函数声明用形参的信息别忘了在本站进行查找喔 。

    推荐阅读