`
shake863
  • 浏览: 661233 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

c++中的存储类型

阅读更多

存储类型是从变量的存在时间(即生存期)来划分变量。变量的存储类型可分为静态存储方式和动态存储方式。对于动态存储变量,当程序运行到该变量处时才为其分配存储空间,当程序运行到该变量所在作用域的结束处时自动收回为其分配的存储空间,因此它的生存期为所在作用域。

在程序开始就执行就为其分配存储空间,直到程序结束时,才收回变量的存储空间,这种变量称为静态存储空间,其生命周期为整个程序执行的过程。

在c++中,变量的存储类型分为:自动类型,寄存器类型,静态类型,外部类型。

1 自动类型auto

只能是局部类型的变量。属于动态存储类型。

2静态存储变量 static

两种,全局变量和静态类型变量 ,static,即在程序运行的过程中静态变量始终是占用一个存储空间。

静态变量只能在他的作用范围内使用,使用局部静态变量是为了在下次调用该函数时,能使用上次调用后得到的该变量的值。

3 寄存器类型变量 register

动态分配方式,编译器不为寄存器类型的变量分配内存空间,而是直接使用cpu的寄存器。以便提高对这类变量的存取速度。主要用于控制循环次数等不需要长期保存值得变量。

4 外部类型变量 extern

外部类型变量必须是全局变量,在c++中,有两种情况下需要使用外部类型变量,

(1)在同一源程序文件中,当在全局的定义之前使用该变量时,在使用前要对该变量进行外部类型变量声明。

(2)当程序有多个文件组成时,若在一个源文件中要引用在另一个源文件中定义的全局变量,在引用前必须对所引用的变量进行外部声明。

如果在某文件中定义的全局变量不想被其他文件所调用,则必须将该变量声明为静态全局变量,也就是说,静态全局变量只能供所在的文件使用。

分享到:
评论

相关推荐

    c++模板存储类数据结构

    C++模板是C++语言中的一个强大特性,它允许我们创建泛型代码,也就是说,同一段代码可以应用于多种数据类型。在"类存储"的场景下,模板特别有用,能够帮助我们构建通用的数据结构,例如栈、队列、树、图等。下面将...

    一个C++仓库存储编程事例

    在C++编程中,仓库存储系统是一种常见的数据管理模型,用于模拟实际仓库中物品的存取、查找、更新等操作。这个事例可能是关于如何使用C++设计和实现一个高效且灵活的仓库管理系统。仓库存储通常涉及到数据结构的选择...

    C++数据类型及取值范围

    在C++编程语言中,数据类型是至关重要的概念,它定义了变量的内存大小和能够存储的值的范围。下面将详细阐述C++中的数据类型及其取值范围。 1. **基本数据类型**: - **字符类型(char)**:用于存储单个字符,如...

    c++链接数据库用二进制存储图像,并能显示图像

    在这个案例中,我们使用C++与Access数据库进行交互,利用二进制数据类型来存储图像。下面我们将详细探讨这个过程涉及的关键知识点。 1. **C++数据库接口**: - C++标准库并未提供直接访问数据库的接口,但可以通过...

    C++ 基本数据类型

    它常用于函数原型中表示该函数不返回任何值,或者在指针类型中表示指向不确定类型的数据。 #### 总结 了解和熟练掌握C++中的基本数据类型是编程的基础。每种类型都有其特定的应用场景和特点,正确选择合适的数据...

    C# 和 C++ 的数据类型比较

    `IntPtr` 和 `UIntPtr` 类型在 C# 中用于表示与平台相关的整数大小,通常用于存储内存地址,C++ 中没有直接的对应类型。 在跨语言交互和平台调用时,C# 会使用特定的类型映射到非托管 C 语言的数据类型。例如,`...

    C++运行时类型信息揭密

    ### C++运行时类型信息揭秘 #### 概述 C++是一种静态类型的编程语言,在编译阶段就已经确定了...此外,理解PE文件结构及其如何存储类型信息也是至关重要的,这有助于开发者更深入地了解C++运行时系统内部的工作原理。

    C++常用数据类型.ppt

    除此之外,C++还定义了存储类型,包括auto、static、register和extern。auto用于自动存储,通常用于局部变量;static提供静态存储,变量在程序运行期间保持其值;register试图将变量存储在寄存器中以提高速度,但并...

    C++C#数据类型对照表

    - `VARIANT`在C++中是一个变体类型,可以存储各种不同类型的数据,在C#中使用`System.Object`来表示。 - **PBYTE (byte*) - System.Byte[]** - `byte*`在C++中表示指向字节数组的指针,在C#中使用`System.Byte[]`...

    存储过程执行类C++

    而在C++编程环境中,通过类来实现对存储过程的调用是常见的做法,这允许更灵活和高效地与数据库进行交互。下面我们将详细探讨如何在C++中实现存储过程的执行类,以及涉及到的相关技术。 首先,执行存储过程通常需要...

    C++Oracle存储过程批量插入

    本话题主要探讨的是如何在C++程序中使用Oracle数据库进行存储过程的批量插入操作。Oracle存储过程是预编译的SQL语句集合,它可以提高执行效率,减少网络通信,并且能够封装复杂的业务逻辑。 首先,我们需要理解C++...

    C++ 数据类型详解

    在C++中,数据类型分为基本数据类型、枚举类型、结构体和联合体,以及C++特有的类等。下面我们将详细探讨C++中的基本数据类型。 首先,C++的基本数据类型包括布尔型、整型、字符型、浮点型以及宽字符型: 1. 布尔...

    C++自定义数据类型(2013级-C++程序设计)

    在C++语言中,自定义数据类型为我们提供了一种途径,能够根据程序的需求定义复合数据类型,以更好地适应程序设计的需要。下面将详细讨论结构体(struct)、共用体(union)、枚举类型(enum)以及typedef声明类型的...

    c++中double与string相互转换算法

    在C++编程中,数据类型之间的转换是常见的操作,特别是在处理用户输入或数据存储时。本文将详细讨论如何在C++中将`double`类型的数值转换为`std::string`字符串,以及如何将`std::string`转换回`double`。我们将基于...

    c++ 文件存储 趣味抽奖系统

    在C++编程中,文件存储是一项重要的技能,尤其在开发如趣味抽奖系统这样的应用程序时。这个项目涉及到几个关键知识点,包括文件操作、数据序列化、安全性(加密)以及日志记录。 1. **文件操作**:C++ 提供了丰富的...

    c++和c#数据类型对照

    - 结构体和数组类型的映射需要特别注意,因为这些类型在两种语言中可能有不同的布局和存储方式。例如,在C#中使用`[MarshalAs(UnmanagedType.LPArray)]`属性来表示指向数组的指针。 #### 结论 综上所述,C++与C#...

    c++ API中文文档

    8. **C++11及后续版本更新**:了解C++11及以后版本引入的新特性,如lambda表达式、右值引用、类型推断等。 通过这份中文文档,你可以逐步构建起对C++的全面认识,并能熟练运用API进行编程。同时,不断实践和项目...

    TypeByte@2019_C#_C++_C数据类型转换时间戳转换_

    Unix时间戳可以存储为long long类型,并通过适当计算转换为日期和时间。 最后,我们来看C语言。C语言的数据类型转换通常通过类型别名(如typedef)和强制类型转换完成。由于C语言的简洁性,处理时间戳通常需要...

    c++中的盒子(BOX)问题

    在C++编程中,"盒子(BOX)"通常指的是一个封装数据类型的对象,它可以用来存储基本类型(如int、char、float等)或者其他对象。在给定的标题"**C++中的盒子(BOX)问题**"中,我们可能讨论的是如何创建一个类来封装基本...

    LJH_决定C++语言中函数的返回值类型

    本篇文章将深入探讨如何在C++中决定函数的返回值类型以及与之相关的知识点。 首先,函数的定义格式如下: ```cpp return_type function_name(parameters) { // 函数体 } ``` 这里的`return_type`就是我们要讨论...

Global site tag (gtag.js) - Google Analytics