c语言中形参的缺省存储类别是什么
更新时间:2023-07-10默认参数的含义
在C语言中,形参的缺省存储类别是"auto",这是默认的存储类别。当没有指定形参的存储类别时,默认为auto。
void func(int x) { auto int y; // 默认存储类别为auto // ... }
auto存储类别的特点
auto存储类别在函数内部定义的局部变量与形参具有相同的性质。它们都具有自动存储时期,即在程序执行到包含该变量的代码块时创建,在代码块执行完毕后销毁。auto存储类别是C语言中的默认存储类别,一般情况下不需要显式指定。
void func() { int x; // x的存储类别是auto // ... }
auto存储类别的限制
auto存储类别主要适用于局部变量及形参,不能用于全局变量和静态变量。
static auto int x; // 错误!不能使用auto作为静态变量的存储类别 auto int func() { auto int x; // 正确!auto适用于局部变量及形参 // ... return x; }
其他存储类别
除了auto存储类别外,C语言还提供了register、static和extern三种存储类别。register用于声明寄存器变量,static用于声明静态变量,extern用于声明外部变量。
// register存储类别示例 int func(register int x) { // ... return x; } // static存储类别示例 int func() { static int x; // 只会初始化一次 // ... } // extern存储类别示例 extern int x; // 声明外部变量x
总结
在C语言中,形参的缺省存储类别是auto。它适用于局部变量及形参,具有自动存储时期,在函数内部定义的auto变量在函数调用结束后会被自动销毁。除了auto存储类别,C语言还提供了register、static和extern三种存储类别供选择。其中,register用于声明寄存器变量,static用于声明静态变量,extern用于声明外部变量。