存储类别为extern是什么意思
时间: 2023-05-23 09:05:04 浏览: 59
A:存储类别为extern表示该变量或函数是在别的文件中定义而不是在当前文件中定义的。在当前文件中使用该变量或函数时,需要使用extern关键字进行声明。这样编译器就知道该变量或函数实际上是在别的文件中定义的,从而可以正确生成目标代码。如果不使用extern进行声明,则编译器会认为该变量或函数是本地定义的,在链接时就会出现错误。
相关问题
详细讲解C语言中的存储类别
在C语言中,存储类别是指用来描述变量或函数的存储方式和生命周期的关键字。在C语言中,一共有4种存储类别,分别是自动存储类、静态存储类、寄存器存储类和外部存储类。
1. 自动存储类:auto
auto是默认的存储类别,也称为局部变量。在函数内部定义的变量默认为auto存储类别。auto变量的生命周期与其所在的函数相同。当函数执行完毕时,auto变量就会被销毁。
2. 静态存储类:static
静态存储类定义的变量在程序执行期间一直存在,不会随着函数的结束而销毁。静态变量可以被多次调用,但只会被初始化一次。静态变量的作用域是局部作用域,但是在函数外部也可以访问,需要使用static关键字来声明。
3. 寄存器存储类:register
寄存器存储类用于定义需要频繁访问的变量。寄存器变量存储在CPU的寄存器中,访问速度比内存快得多。但是并不是所有的变量都能存储在寄存器中。因为寄存器的数量有限,所以只有一些变量才能被放入寄存器中。使用register关键字声明的变量,只是对编译器的建议,不能保证被分配到寄存器中。
4. 外部存储类:extern
外部存储类用于在不同的文件之间共享变量和函数。当在一个文件中定义了一个变量或函数,如果想在其他文件中使用它们,就需要使用extern关键字来声明。extern声明的变量或函数并不会分配内存空间,它只是告诉编译器在其他文件中有这个变量或函数的定义。
这就是C语言中的存储类别。通过使用不同的存储类别关键字,可以更加灵活地管理变量和函数的生命周期和存储方式。
c语言函数的隐含存储类别
在 C 语言中,函数的隐含存储类别为 extern。这意味着函数默认情况下具有外部链接,可以在其他文件中访问。如果函数被定义为 static,则其存储类别为静态,只能在当前文件中访问。如果函数被定义为 inline,则其存储类别为内联,该函数将在编译时被直接插入到调用它的代码中,以提高效率。此外,C99 标准引入了一个新的存储类别 _Thread_local,用于指定在不同线程中具有不同值的变量,但不适用于函数。