C语言参数本质

本文探讨了C语言参数传递的本质,指出无论定义为char还是short类型,参数实际上都按照4字节(32位)进行传递。同时,即使函数不包含任何操作,编译器也会为函数分配一定的栈空间,例如在vc++6.0中,空函数默认分配40字节。当增加int声明时,栈空间变为44字节。总结建议避免定义char/short类型的局部变量,并视参数为栈中的局部变量处理。
摘要由CSDN通过智能技术生成

C语言参数本质

通过了解参数传递的本质了解编译器 vc++6.0
C语言代码:
在这里插入图片描述
我们来看一下反汇编窗口:按F10
在这里插入图片描述
通过这个反汇编代码我们看到,在vc++6.0中虽然我们传递参数时定义的是char类型,但是在主函数中它传递参数的方式依然是按照32位的方式传递。。。

#我们传递参数时定义char类型和short类型是无意义的,它传递参数都是按照4字节传递的,如果是64位的他就按照8字节传递的#

总结:参数传递的本质,将上层函数的变量,或者表达式的值“复制一份”,传递给下层函数。

看完了参数传递的本质,那我们来了解下创建一个空函数,什么都不干,他是如何开辟多大的内存缓冲区,在之前的学习中我们了解到,即使我们什么都不做,开辟函数时,他也会自动提升堆栈,提升缓冲区。
C语言:
在这里插入图片描述
汇编代码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值