IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 了解C语言变量 -> 正文阅读

[C++知识库]了解C语言变量

变量就是一个可以变化的量。

C语言中所有的变量都有它的作用范围,这个范围叫变量的作用域,变量按作用域可以分为两种:局部(自动)变量和全局变量。

局部变量也叫内部变量,自动变量,在C语言中局部变量主要为for ,while 循环和函数中定义的变量,函数的形参。

局部变量的特性:

一,其作用域仅限于循环和函数内,离开函数和循环后再使用这种变量是非法的。

二,形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。(这是一个相对的概念,调用者叫主调函数,被调用者叫被调函数,一个函数可以是主调函数也可以是被调函数。在定义函数时函数名后面括号中的变量称为“形式参数”。在主调函数中调用被调函数时,函数名后面括号中的参数称为“实际参数”。实际参数可以是常量、变量或表达式。函数调用过程中,系统会把实参的值传递给被调用函数的形参,该值在函数调用期间有效,可以参加该函数中的运算。)形参变量只在被调用期间才分配内存单元,调用结束后立即释放内存。

三,一个函数(包括主函数)中定义的变量只能在本函数中使用,不能在其它函数中使用,(不过函数一般是被调用在主函数中的)。所以允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰。

四,在复合语句中也可以定义变量,其作用域只在复合语句内。

全局变量的特性:

全局变量也叫外部变量,它是在函数(包括主函数)外部定义的变量,不属于哪一个函数,而属于整个源文件。它的作用域为从变量定义处开始,到本程序文件的末尾。

在函数之前定义的全局变量,在函数内使用时可不加以说声明,在函数之前未定义的全局变量,在函数内使用时必须加以声明(以下讲如何声明)。

变量按值的生存期,分为静态存储和动态存储。

静态存储方式:在程序运行期间分配固定的存储空间的方式,在程序开始执行时为全局变量分配存储区,程序执行完毕就释放。在程序执行过程中,他们始终占据固定的存储单元,而不动态的进行分配和释放。

全局变量全部存放在静态存储区。

动态存储方式:在程序运行期间根据需要进行动态分配的存储空间的方式,用时系统会分配存储空间,结束时自动释放这些存储空间。

不同的存储方式决定了变量的生存期,根据变量的存储方式和作用范围又可把变量分为四种:自动(auto),寄存器(register),静态(static),外部(extern)。

auto 变量

即前面的局部(自动)变量(如不加专门声明为static存储类别),按动态存储方式存储,数据存储在动态存储区中。

关键字auto可以省略,auto不写则隐含为‘自动存储类别’。

static 变量

有时希望函数中的局部变量的只值在函数调用结束后不消失而保留原值,应用关键字static进行声明,指定局部变量为静态局部变量(延长了局部变量的作用域和生命周期),按静态存储方式存储。

静态局部变量在编译时赋初值,即只赋初值一次,,如不赋初值编译器自动赋初值0(对数值型变量)或空字符(对字符变量)。局部变量赋初值是在调用时进行,每调用一次重新赋初值,如不赋初值,则它的值是一个不确定的值。

静态全局变量
注意使用static修饰变量,就不能使用extern来修饰,即static和extern不可同时出现。static修饰的全局变量的声明与定义同时进行,即当你在头文件中使用static声明了全局变量,同时它也被定义了。

static修饰的全局变量的作用域只能是本身的编译单元。在其他编译单元使用它时,只是简单的把其值复制给了其他编译单元,其他编译单元会另外开个内存保存它,在其他编译单元对它的修改并不影响本身在定义时的值。即在其他编译单元A使用它时,它所在的物理地址,和其他编译单元B使用它时,它所在的物理地址不一样,A和B对它所做的修改都不能传递给对方。

多个地方引用静态全局变量所在的头文件,不会出现重定义错误,因为在每个编译单元都对它开辟了额外的空间进行存储。

register 变量

为了提高效率,C语言允许将局部变量的值放在CPU的寄存器中,这种变量叫寄存器变量,用关键字register声明。

只有局部自动变量可以作为寄存器变量,寄存器变量也按动态存储方式存储,局部静态变量不能定义为寄存器变量。

一个计算机寄存器数目有限,即寄存器变量数目有限。

extern 变量

想要在全局变量定义之前该外部变量,应用关键字extern对变量作外部变量声明,表明该变量是一个已经定义的外部变量,有此声明,可以从声明处起合法使用后该外部变量。

extern使用方法总结!_CSDNwei的专栏-CSDN博客_extern 用法

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 09:58:18  更:2021-09-26 09:58:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 20:08:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码