详细讲解一下C语言中的存储类别,并分别给出使用方法和示例代码
时间: 2024-01-24 13:17:30 浏览: 85
浅谈C语言的数据存储
C语言中的存储类别指的是变量或函数在内存中的存储方式。C语言中有4种存储类别:自动存储类、静态存储类、寄存器存储类和外部存储类。下面我们将分别介绍这四种存储类别的使用方法和示例代码。
1. 自动存储类(auto)
自动存储类是C语言中默认的存储类,用于指定在函数内部定义的局部变量。自动存储类的变量会在函数调用时被自动分配内存,在函数结束时自动释放内存。自动存储类的变量不会被初始化,其值是未知的。
使用方法:
```
auto int i;
```
示例代码:
```
#include <stdio.h>
void func()
{
auto int i = 0; // 定义自动存储类变量
i++; // 对变量进行操作
printf("i = %d\n", i);
}
int main()
{
func();
func();
return 0;
}
```
输出:
```
i = 1
i = 1
```
2. 静态存储类(static)
静态存储类用于指定在函数内部或函数外部定义的静态变量。静态存储类的变量会在程序运行期间一直存在,不会随着函数的调用而创建和销毁。静态存储类的变量会被初始化为0或NULL。
使用方法:
```
static int i;
```
示例代码:
```
#include <stdio.h>
void func()
{
static int i = 0; // 定义静态存储类变量
i++; // 对变量进行操作
printf("i = %d\n", i);
}
int main()
{
func();
func();
return 0;
}
```
输出:
```
i = 1
i = 2
```
3. 寄存器存储类(register)
寄存器存储类用于指定在函数内定义的变量存储在CPU寄存器中,以便快速访问。寄存器存储类的变量不能取地址,因为它们没有内存地址。
使用方法:
```
register int i;
```
示例代码:
```
#include <stdio.h>
void func()
{
register int i = 0; // 定义寄存器存储类变量
i++; // 对变量进行操作
printf("i = %d\n", i);
}
int main()
{
func();
func();
return 0;
}
```
输出:
```
i = 1
i = 1
```
4. 外部存储类(extern)
外部存储类用于指定在函数外部定义的全局变量或函数。外部存储类的变量或函数可以在任何文件中访问,需要在使用前进行声明。
使用方法:
```
extern int i;
```
示例代码:
```
// 文件1.c
#include <stdio.h>
int i = 0; // 定义全局变量
void func()
{
i++; // 对变量进行操作
printf("i = %d\n", i);
}
// 文件2.c
extern int i; // 声明全局变量
int main()
{
func();
func();
return 0;
}
```
输出:
```
i = 1
i = 2
```
阅读全文