【C语言—零基础第十四课】变量的作用域与存储类

简介: 作用域就是说到在哪里可以使用在哪里不可以使用。例如你是一家公司的老总,手下的人都听你指挥。而你出了公司去别的公司调研别的公司的人也听从你的指挥吗?你也不给人家发工资人家为啥要听你指,大致就是这么个意思。如果你开了几十个公司,到这几个公司去他们也听你的。孩子不要在幻想了,好好敲代码把。


目录

什么是作用域?

局部变量

全局变量

变量的存储类

自动型:auto

静态型:static

动态存储方式与静态存储方式


什么是作用域?

作用域就是说到在哪里可以使用在哪里不可以使用。例如你是一家公司的老总,手下的人都听你指挥。而你出了公司去别的公司调研别的公司的人也听从你的指挥吗?你也不给人家发工资人家为啥要听你指,大致就是这么个意思。如果你开了几十个公司,到这几个公司去他们也听你的。孩子不要在幻想了,好好敲代码把。

作用域:所谓作用域就是变量的有效范围。

变量可以分为局部变量全局变量

局部变量

而在前边我们的使用都是只main()方法中实现的代码,指在main()函数中有效可用,即局部变量。

定义变量可能的三种情况:

在函数的开头定义

在函数内的复合语句中定义

在函数外部定义

在函数开头定义的只在本函数中有效}括号内部有效,在复合语句中定义的只在符合语句中有效}括号中。

总结:作用域自定义位置起,到复合语句或函数的结束。{}中有效

#include<stdio.h>
main() {
  int a = 1,b = 2;
  {
    int a = 3;
    printf("%d\n",a);
  }
  printf("%d\n", a);
}

image.gif

结果:

3

1

#include<stdio.h>
void fun() {
  int a = 10;
  printf("%d\n", a);
}
main() {
  int a = 1,b = 2;
  fun();
    printf("%d\n",a);
}

image.gif

结果:

10

1

全局变量

在函数外部定义的变量称为全局变量。

作用域为自定义位置起,到整个程序的结束。

#include<stdio.h>
int a = 10;
main() {
  {
  int a = 1,b = 2;
  printf("%d\n",a);
  }
  printf("%d\n", a);
}

image.gif

结果:

1

10

变量的存储类

自动型:auto

函数中的局部变量,默认都是动态分配存储空间的,在调用该函数时系统会给这些变量分配存储空间,函数调用结束时就自动释放存储空间。这类局部变量成为自动变量。用关键字auto。

Auto     int       a

存储类 类型名 变量名

auto int a;

image.gif

静态型:static

希望函数中的局部变量的值在函数调用解释后不消失而保留原值,即其占用的存储单元不释放,这类局部变量成为静态局部变量。

static a;

image.gif

for (int i = 0;i < 5;i++) {
      static a= 0;
    a++;
    printf("%d\n", a);
}

image.gif

结果:

1
2
3
4
5

总结:

auto自动型,默认类型

register容器类型(这个不太重要,就没有解释)

static静态类型、内部变量、内部函数(无法取地址)

extern 声明外部变(后边会说到)

动态存储方式与静态存储方式

从变量值的生存期的角度划分,可以分为静态存储方式和动态存储方式。

静态区:

变量类型:静态局部变量、全局变量或外部变量、

初始化在编译阶段性下,初值为0

生存周期:整个程序

动态区:

变量类型:动态变量

初值为随机值

生存期:他所存在的的局部变量

给小伙伴们推荐个学习、刷题的网站?

各种面试题应有尽有,刷题刷到你手软!

各种互联网学习资料,各个大厂面试真题从 零基础开始学习,帮你轻松应对各类面试题目,快来充实一下自己吧!

点击开始注册🐂 学习、刷题


目录
相关文章
|
2月前
|
存储 编译器 C语言
C语言存储类详解
在 C 语言中,存储类定义了变量的生命周期、作用域和可见性。主要包括:`auto`(默认存储类,块级作用域),`register`(建议存储在寄存器中,作用域同 `auto`,不可取地址),`static`(生命周期贯穿整个程序,局部静态变量在函数间保持值,全局静态变量限于本文件),`extern`(声明变量在其他文件中定义,允许跨文件访问)。此外,`typedef` 用于定义新数据类型名称,提升代码可读性。 示例代码展示了不同存储类变量的使用方式,通过两次调用 `function()` 函数,观察静态变量 `b` 的变化。合理选择存储类可以优化程序性能和内存使用。
152 82
|
18天前
|
存储 C语言
【c语言】数据类型和变量
本文介绍了C语言中的数据类型和变量。数据类型分为内置类型和自定义类型,内置类型包括字符型、整型、浮点型等,每种类型有不同的内存大小和取值范围。变量分为全局变量和局部变量,它们在内存中的存储位置也有所不同,分别位于静态区和栈区。通过示例代码和图解,详细阐述了这些概念及其应用。
33 1
|
21天前
|
存储 C语言
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
|
29天前
|
存储 C语言
C语言:设置地址为 0x67a9 的整型变量的值为 0xaa66
在C语言中,可以通过指针操作来实现对特定地址的访问和赋值。要将地址为 0x67a9 的整型变量值设为 0xaa66,可以先定义一个指向该地址的指针,并通过该指针对该内存位置进行赋值操作。需要注意的是,直接操作内存地址具有一定风险,必须确保地址合法且可写。代码示例应考虑字节序及内存对齐问题。
|
1月前
|
C语言 C++
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
|
1月前
|
存储 编译器 C语言
【C语言】函数(涉及生命周期与作用域)
【C语言】函数(涉及生命周期与作用域)
|
27天前
|
存储 C语言
深入C语言内存:数据在内存中的存储
深入C语言内存:数据在内存中的存储
|
28天前
|
存储 C语言
初识C语言:常量与变量中寻找数据类型
初识C语言:常量与变量中寻找数据类型
|
2月前
|
存储 C语言
【C语言基础考研向】02 数据类型-常量-变量
本文介绍了编程中的基本概念,包括数据类型分类、常量与变量的定义及使用。首先概述了四大类数据类型:基本类型(整型、浮点、字符型)、构造类型(数组、结构体)、指针类型和空类型。接着阐述了常量与变量的区别及命名规则,并详细说明了整型、浮点型和字符型数据的特点与应用。最后总结了常见的易错点,如字符串与字符常量的区别及浮点数的默认输出格式。
|
1月前
|
C语言 C++
实现两个变量值的互换[C语言和C++的区别]
实现两个变量值的互换[C语言和C++的区别]
16 0