45、C语言编程:存储类、库函数修改与条件编译详解

C语言编程:存储类、库函数修改与条件编译详解

1. 存储类概述

C语言中有五种存储类,目前我们已经了解了其中三种。函数的形式参数和局部变量属于自动存储类(auto),当函数被调用时,这些变量会自动在栈上分配空间,函数返回时则自动释放。其作用域从声明点开始,到声明所在函数的结束处为止。

函数名本身属于外部存储类(extern),这意味着它们可被链接器使用。若函数原型位于函数定义之前,那么程序中的其他函数就可以调用这些函数。编译器在翻译函数调用时,需要知道函数的返回类型、参数数量以及参数的数据类型,而外部原型声明的作用就是提供这些信息。不过,这种声明并不会创建一个外部存储类的函数,它只是告知编译器该函数存在,链接器会知道在哪里找到它。

下面是一个展示自动和外部存储类的示例代码:

void
fun_one (int arg_one, int arg_two)
{
      int one_local;
      ...
}
int
fun_two (int a2_one, int a2_two)
{
      int local_var;
      ...
}
int
main (void)
{
      int num;
      ...
}

在这个示例中,彩色显示的名称属于自动存储类,加粗的黑色名称属于外部存储类。程序的顶层部分,外部存储类是所有在此级别声明的名称的默认存储类。

2. 全局变量

在程序的顶层,我们通常看到的是函数声明,但也可以声明变量(尽管通常不建议这么做)。这种变量的作用域从声明点开始,到源文件的末尾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值