C语言 中的存储类将让我们了解变量的范围、存储以及变量的初始默认值。简而言之,存储类将描述一个变量或函数的特征。
simplilearn的这篇文章将帮助你详细了解C语言的存储类。
C语言中的四种存储类是。
- 自动
- 静态的
- 注册
- 外在的
你将详细了解它们中的每一个。
自动存储类
- Auto关键字指的是一个自动变量。默认情况下,所有局部变量都是自动变量。
- 自动变量的范围是在函数块内,不能在函数外访问。
- 自动变量在函数的开始就被声明。一旦函数调用的内存被分配,当控件来到函数之外时,自动变量的内存就被取消分配。
- 默认情况下,自动变量的初始值是没有意义的垃圾值。
自动变量的声明语法是。
Int a; //by default, it is an auto variable.
Float b;
This is similar to prefixing the keyword auto before the data types.
Auto int a;
Auto float b;
Example Program Using Automatic Variables.
#include <stdio.h>
void main()
{
int a = 5; //auto variable by default
auto b = 10;
printf("a = %d \n", a);
printf("b = %d \n", b);
}
输出。
现在我们知道了自动变量在C语言编程中的应用,下面我们来看看C语言的静态存储类。
静态存储类
- 静态变量是用关键字static来声明的。静态变量的生命期是在整个程序运行期。
- 在函数中声明的静态变量不能在函数之外被访问。
- 假设静态变量是在函数内部声明的。一旦函数被调用,静态变量的内存就被分配,当控制权从函数中出来时,它不会被取消分配。因此,一个静态变量的当前值可以在下面的函数调用中被访问。
- 静态变量必须在程序执行前被初始化,否则,初始默认值将为零。
- 静态变量可以全局声明,并在整个程序中进行访问。
静态变量的声明语法是。
static data-type variable_name = value_initialization;
例子。
Static int sum =0;
使用自动变量的程序示例。
#include <stdio.h>
int calc()
{
static int sum = 2;
sum++;
return sum;
}
void main()
{
printf("sum = %d \n", calc());
printf("sum = %d \n", calc());
}
输出。
在上面给出的程序中,一个静态变量的值被初始化为2。如果程序中没有初始化静态变量,那么默认情况下,初始值将被分配为0。
静态变量在定义它的函数中是局部的。一旦该函数被调用,其值将被增加1,即初始值2+1=3,并打印出值3
一旦控制权离开函数,内存将不会被取消分配;因此,值3被存储。
在下一个函数调用中,值3将被增加1,并打印出新的值4。
如果该变量没有被声明为静态变量,那么在两次函数调用中,和值将是相同的;也就是说,两次函数调用的和值都是3。
接下来,我们有寄存器存储类。
寄存器存储类
- 用关键字 register 声明的变量是 register 变量。寄存器变量的范围是在定义它的函数块中。
- 寄存器变量类似于C语言中的自动变量,然而,它们被存储在CPU寄存器中。与存储在内存中的自动变量不同的是
- 经常访问的变量被存储在CPU寄存器中,因为访问时间较短,使我们的程序运行得更快。
- 有时,当所有的CPU寄存器都繁忙时,寄存器变量会自动存储在内存中,这被认定为自动变量。
寄存器变量的声明语法是。
register data_type variable_name。
例子。
register int a;
使用自动变量的程序示例。
#include <stdio.h>
int print()
{
register int i=0;
i++;
return i;
}
void main()
{
printf("The value of i = %d \n", print());
}
输出。
我们清楚地知道了为什么在C语言编程中使用寄存器存储类,接下来我们有了外部存储类。
外置存储类
- 外部变量是用关键字extern来声明的。默认情况下,所有的全局变量都是外部变量。该变量的范围是整个程序。
- 外部变量被称为全局变量,因为它们是在主函数之前的函数之外声明的。
- 外部变量在多个C文件中共享变量。
- 外部变量存储在内存中,其初始默认值被分配为零。
- 分配给外部变量的值可以在另一个程序块中改变。
寄存器变量的声明语法是
extern data_type variable_name。
例子。
extern float pi;
File 1 (file.h)
extern int x = 10,y = 20;
In the file demo.c let's try to access the external variables
So for that, let's include the header file demo. h.
File 2 (demo.c)
#include "file.h"
#include <stdio.h>
void main()
{
int add;
printf("x = %d \n",x);
printf("y = %d \n",y);
add=x+y;
printf("Add = %d \n",add);
}
从上面给出的程序中,我们试图访问Demo.c文件中的外部变量,这些变量在程序文件.h中声明。