正文
c语言子函数声明用形参 c语言子函数变量
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
一个关于C语言的子函数的形参问题
int rollDice(void)
括号里的void是说这个函数不需要参数。
前面的int是说这个函数返回的是一个int类型的值。
而worksum正是int类型的值。
为什么C语言的子函数不直接用型参参与运算,而是另外声明个局部变量,形参再赋值给这个局部变量?
函数的副作用是最令人头疼的问题
我们都知道形参使得函数可以改变调用者的变量值
所以很容易产生副作用
所以函数设计时应当避免频繁改变形参的值
这就是你所看到的现象:“不直接用型参参与运算”
这样就不会改变调用者的变量值
当然最后还是要改变形参的值,否则形参就没有意义了
还有另一个原因是编译有关的
局部变量是在栈分配空间的
生成的机器代码是近调用的短地址
而形参就很难说了
可能有的编译器,先按值参处理,最后再用结果修改形参
这样做就不用担心“直接用型参参与运算”的会频繁修改形参了
但是却不符合形参的本义
因此编译器会直接引用形参的地址,就会生成远调用的长地址了
把形参编译成长短不同的地址,这在调用系统功能时就有讲究了
你的代码里有“interrupt”字样,我没猜错的话就是中断调用
这时需要长地址还是短地址,那可是一点也不可弄错了
用局部变量就会得到短地址
C语言中函数声明中 的形参问题
在main函数之前做函数申明一定没错。在main函数之前添加这一句float m(int x,float y)
还有,你说的int x,float y这两个参数类型不一样,这是完全允许的;实参在向形参传递参数的时候:实参会按照形参的类型进行转换。
c语言子函数声明用形参的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言子函数变量、c语言子函数声明用形参的信息别忘了在本站进行查找喔。