参数是否被视为自动变量?

时间:2016-11-29 19:22:58

标签: c function variables parameters

  

自动变量是一个分配的局部变量   程序流进入和离开时自动解除分配   变量的范围。

因此,如果我有一个带参数的函数,这是否意味着参数的范围是整个函数,因此它符合上述定义?或者它不太适合这个?

(我不确定将这个问题放在哪个类别,对不起)

2 个答案:

答案 0 :(得分:3)

是的,参数是具有自动存储持续时间的对象。

N1570 6.9.1p9:

  

每个参数都有自动存储持续时间;它的标识符是左值。

您询问范围,它并不直接相关。范围和寿命是两回事。标识符具有范围,即标识符可见的程序文本区域。对象具有存储持续时间(生存期),它是程序执行期间逻辑上存在对象的时间段。在执行封闭块期间存在具有自动存储持续时间的对象;对于函数参数,它在函数返回时不再存在。它的名称只在函数体内可见,但是对象本身可以从其作用域外部访问(例如,如果它的地址被传递给另一个函数)。

答案 1 :(得分:1)

是。参数在函数内有效,直到函数结束。