c语言中 形参的隐含存储类型是,C语言中,实参的隐含存储类型是? 形参的隐含存储类型是? A、auto B、static C、extern D、register...

匿名用户

1级

2011-08-09 回答

答案都选A:上面几位胡说霸道。

不是static 形参存储类型只有两种可能,一是auto类型,而是register类型。我给你细细解说

auto 就是堆栈存储 而register的是cpu内部寄存器存储

具体函数的形参采用那种存储方法,这和函数的“调用规则(calling convention)”有关。

调用规则主要设计参数的传递,入栈顺序,寄存器传参,函数返回值的存储和清栈者,调用规则主要有 cdecl stdcall thiscall fastcall等等。栈是函数调用必需的数据结构。你可以在函数声明是注明函数的调用规则:如 int cdecl add (int a,int b) 。 注意函数有默认的调用规则,所以你再写程序时,没有必要注明调用规则。你此外还可以添加编译选项修改调用规则。

cdecl : (c/c++语言默认的调用规则):堆栈传参参数,因此是auto类型。

stdcall...答案都选A:上面几位胡说霸道。

不是static 形参存储类型只有两种可能,一是auto类型,而是register类型。我给你细细解说

auto 就是堆栈存储 而register的是cpu内部寄存器存储

具体函数的形参采用那种存储方法,这和函数的“调用规则(calling convention)”有关。

调用规则主要设计参数的传递,入栈顺序,寄存器传参,函数返回值的存储和清栈者,调用规则主要有 cdecl stdcall thiscall fastcall等等。栈是函数调用必需的数据结构。你可以在函数声明是注明函数的调用规则:如 int cdecl add (int a,int b) 。 注意函数有默认的调用规则,所以你再写程序时,没有必要注明调用规则。你此外还可以添加编译选项修改调用规则。

cdecl : (c/c++语言默认的调用规则):堆栈传参参数,因此是auto类型。

stdcall :有叫做pascal,WINAPI,这个调用规则出现在windows的API函数中。它也采用堆栈传递参数。

thiscall:类中的函数的调用方式:参数传递和编译器有关 Windows VC中 this指针用ECX寄存器存储,而unix gcc中 this用栈存储。其他参数也是用栈存储。

fastcall:用寄存器存储部分参数加快函数调用,其他参数用栈存储。

所以,没有隐含的存储类型,形参的存储类型和调用规则有关。但是如果真要学究般的考虑这个问题,则答案选A,因为C语言函数的默认调用方式是cdecl,它的参数传递只采用了栈,因此是auto(答案A)

而实参的存储类型可以是A,B,C,D四种,隐含的类型(也就是你在定义变量是,不指明存储类型)是auto(答案A)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值