c语言编程笔录

首页 >   > 笔记大全

笔记大全

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用于声明外部变量。