描述一个变量或函数的特征-关于C语言存储类知识的实例指南

166 阅读4分钟

C语言 中的存储类将让我们了解变量的范围、存储以及变量的初始默认值。简而言之,存储类将描述一个变量或函数的特征。

simplilearn的这篇文章将帮助你详细了解C语言的存储类。

C语言中的四种存储类是。

  1. 自动
  2. 静态的
  3. 注册
  4. 外在的

你将详细了解它们中的每一个。

自动存储类

  • 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);

 } 

输出。

image.png

现在我们知道了自动变量在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());    

}

输出。

image.png

在上面给出的程序中,一个静态变量的值被初始化为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());

}

输出。

image.png

我们清楚地知道了为什么在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中声明。

输出。

image.png