首页 > 试题广场 >

函数参数的默认值不允许为( )?

[单选题]
函数参数的默认值不允许为()
  • 全局常量
  • 直接常量
  • 局部变量
  • 函数调用
局部变量是函数调用之后,才会被构造出来,而函数参数的值的存在,是在调用函数的时候就必须存在的。
发表于 2018-05-17 15:51:47 回复(0)
因为程序在运行时才会给程序中定义的变量开辟内存空间和进行初始化,函数是在被调用的时候才会给形参和函数体内定义的变量开辟内存空间,带有默认形参的函数在给形参开辟空间后就回先把默认值赋给形参,若没有实参传递,形参值就是默认值,默认值必须是系统能确切找得到的值才能进行对带有默认值形参进行初始化,而局部变量不是在正在被调用的函数内定义的(形参是函数一开始就定义的)或者在其他函数内定义并被使用完就被释放掉了,因此系统就会找不到一个确切的值赋给形参,所以函数参数默认值不允许为局部变量。 默认值不可以是局部变量,因为默认参数的函数调用是在编译时确定的,而局部变量的位置与值在编译时均无法确定。

编辑于 2019-06-26 16:29:36 回复(1)

例如:

void fun(int x=t)

int t=2;

调用这个函数时会出错


发表于 2019-08-29 22:56:34 回复(1)
感觉这个题出的不严谨,在调用函数里的局部变量不就可以作为实参传参吗????????
发表于 2018-07-28 22:05:57 回复(4)
我感觉我语文不好,很多题目都读不懂它想真正表达什么
发表于 2019-07-02 16:38:36 回复(4)
默认值不可以是局部变量,因为默认参数的函数调用是在编译时确定的,而局部变量的位置与值在编译时均无法确定
发表于 2021-03-25 10:07:49 回复(0)
函数调用这个选项不懂

发表于 2020-12-02 16:41:59 回复(1)
局部变量是函数调用之后,才能被构造出来的,而函数的参数的值是存在的,是在调用函数的时候就必须存在的
发表于 2021-03-03 11:02:40 回复(0)
硬是没看懂题目
发表于 2018-10-09 14:59:21 回复(0)
是不是函数的默认参数为调用该函数的函数局部变量也不行?
发表于 2018-07-16 17:31:13 回复(0)
函数参数默认值在编译时是确定的,因此必须是系统能够确切找到的值才能进行初始化,而局部变量在编译时位置和值都无法确定,因此不能作为函数参数默认值。
这也是为什么不能使用局部变量作为函数参数默认值的原因之一。
发表于 2023-11-30 19:22:03 回复(0)
<p>大佬出来解释下啊</p>
发表于 2020-11-14 13:25:38 回复(0)
是   函数的参数   看清题啊
发表于 2019-07-17 11:46:05 回复(0)
没懂题目意思
发表于 2019-03-19 08:26:18 回复(0)
大佬何在?
发表于 2018-08-20 09:45:01 回复(0)