C++里有哪几种数据类型

2023-11-19

C++里有哪几种数据类型?

1.基本类型

   布尔型

  布尔型,即bool,它的取值只能是true(真)或者false(假),分别代表非零与零。对布尔型的赋值可以直接用true或者false进行赋值,也可以用整型常量对其进行赋值,只不过整型常量赋值给布尔型变量会自动转换为true或者false。true就是(非零,在计算机中存储时以1存储),false就是(零,计算机内以0存储)。

   字符型

char类型
    char是基本的字符类型,一个char的空间应确保可以存放(机器基本字符集中)任意字符对应的数字值。也即,一个char的大小和一个机器字节(8bit)一样。储存ASCII码
其他字符类型
    作用:用于扩展字符集。
    wchar_t类型:用于确保可以存放机器最大扩展字符集中的任意一个字符。用于存储其他语言中的字符。
    char16_t/char32_t类型:为Unicode字符集服务。
    Unicode:是用于表示所有自然语言中字符的标准。

   整形
数据类型 定义标识符 占字节数 数值范围
短整形 short int 2 -216~~215-1
整形 int 4 -232~~231-1
长整形 long int 4 -232~~231-1
超长整形 long long int 8 -264~~263-1
无符号整形 unsigned 2 0~~216-1
无符号短整形 unsigned short 2 0~~216-1
无符号长整形 unsigned long 4 0~~232-1
无符号超长整形 unsigned long long 8 0~~264-1
   浮点型

   float 数据类型被认为是单精度。double 数据类型通常是 float 的两倍大小,因此被认为是双精度。顾名思义,long double 数据类型又比 double 要大。这些数据类型的确切大小取决于当前使用的计算机。唯一可以保证的是:
  double 至少与 float 一样大。
  long double 至少与 double一样大。

   字符串类

  在C++标准库里,通过类string从新自定义了字符串。
  头文件: #include
  string直接支持字符串连接
  string直接支持字符串的大小比较
  string直接支持子串查找和提取
  string直接支持字符串的插入和替换
  string同时具备字符串数组的灵活性,可以通过[ ]重载操作符来访问每个字符。

2.构造类型

  数组类型

  一个数组就像一个变量,但是它可以存储一组值,所有值均具有相同的数据类型。这些值一起存储在连续的内存位置。数组的大小声明符必须是一个常量整数表达式,其值大于零。它可以是一个常数,也可以是一个命名常量。

int SIZE=5;
int array[SIZE];
float arrayf[10]//10个float值的数组
char arrayc[20]//20个char值的数组
string arrays[5]//5个string对象的数组
  结构体类型

  结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型。第二,相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同。结构体可以描述数组不能够清晰描述的结构,这是数组所不具备的。
  定义结构体使用struct修饰符

  共用体类型

  共用体类型也是用来描述类型不相同的数据,但与结构体类型不同,共用体数据成员存储时采用覆盖技术,共享(部分)存储空间。在结构体中增加共用体类型成员,可使结构体中产生动态成员,相当于PASCAl,语言的变体记录。
  共用体类型定义用关键字union标识

  类类型

  类代表了某一批对象的共性和特征。类是对象的抽象,对象是类的具体实例。和结构体类型和结构体变量一样,c++中也是先声明一个类类型,然后用它去定义若干个同类型的对象。对象就是类类型的一个变量。

class Student //声明了一个名为student的类类型
{
	private:
	int num;
	public:
	void display();
};
Student stud1,stud2; //定义了两个Student类的对象

  事实上,类也是一种数据类型,它是一种广义的数据类型,过去接触的都是狭义的数据类型,如结构体类型的成员都是数据,而类这种数据类型的数据既包含数据也包含操作数据的函数。

  枚举类型

  如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。
  声明枚举类型用enum开头。
  l例如

enum weekday{sun,mon,tue,wed,thu,fri,sat};

  上面声明了一个枚举类型weekday,花括号中sun,mon,…,sat等称为枚举元素或枚举常量。
表示这个类型的变量的值只能是以上7个值之一。它们是用户自己定义的标识符。

3.指针类型

  指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。

4.引用类型

  “引用”是c++的一种新的变量类型,是对C的一个重要补充。它的作用是为变量起一个别名。假如有一个变量a,想给它起一个别名。

int a;int &b=a;

  这就表明了b是a的“引用”,即a的别名。经过这样的声明,使用a或b的作用相同,都代表同一变量。在上述引用中,&是“引用声明符”,并不代表地址。不要理解为“把a的值赋给b的地址”。引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。声明引用并不开辟内存单元,b和a都代表同一变量单元。
注意:在声明引用变量类型时,必须同时使之初始化,即声明它代表哪一变量。在声明一个变量的引用之后,在本函数执行期间,该引用一直与其代表的变量相联系
  引用的规则
  (1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
  (2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。
  (3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。
  引用的主要功能:
  传递函数的参数和返回值。

  C++语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。

5.空类型

  对于空类,编译器不会生成任何的成员函数,只会生成1个字节的占位符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++里有哪几种数据类型 的相关文章

随机推荐

  • QT5.15编译2

    准备工作 必须 第一步 Qt 源码下载 https download qt io official releases qt Qt Creator 源码下载 https download qt io official releases qtc
  • RabbitMQ重复消费

    文章目录 前言 重复消费问题 方法一 消息幂等性 方法二 消息去重 前言 解决 RabbitMQ 重复消费问题是消息队列应用中非常重要的一部分 在实际应用中 可能会出现消费者因某种原因 例如网络问题 应用崩溃等 在处理消息时失败 然后重新开
  • 4.2.1测试网络基础结构配置

    测试网络基础结构配置 ID WSTG CONF 01 总结 互连和异构 Web 服务器基础结构 可能包括数百个 Web 应用程序 的内在复杂性使得配置管理和审查成为测试和部署每个应用程序的基本步骤 只需要一个漏洞就可以破坏整个基础架构的安全
  • HTTP(GET/POST)请求过程中的编码问题

    一 问题 编码问题是JAVA初学者在web开发过程中经常会遇到问题 网上也有大量相关的文章介绍 但其中很多文章并没有对URL中使用了中文等非ASCII的字 符造成服务器后台程序解析出现乱码的问题作出准确的解释和说明 本文将详细介绍由于在UR
  • MATLAB中的eps的详细解释及用法

    1 首先 eps是一个函数 它表示的是一个数可以分辨的最小精度 默认时它表示1到它下一个浮点数之间的距离的一半 而正好等于最大小于1的浮点数到最小大于1的浮点数之间的距离 eps 2 2204e 16 下面是eps的默认精度 注 以下演示环
  • git高级用法之rebase

    rebase的高级用法 这里介绍两种高级用法 1 合并连续的或者不连续的两个提交记录 删除任意一个提交记录 改变提交记录的先后顺序 2 通过rebase合并分支 合并连续的两个提交 如下图的场景 gl是git log的缩写 不过也没这么简单
  • mybatis 循环集合查询

    数据库语句为 select from user where 张三 李四 王五 那么想用mybatis Mapper y entity 定义一个集合属性作为参数 private List searchName dao层 定义一个映射mappe
  • 使用MobaXterm连接到远程服务器

    仅供参考 文章目录 TOC 文章目录 一 前期准备 二 步骤 1 点击上册工具栏的Session 在弹出的窗口里选择SSH 2 点击Network settings 再点击中间的jump host 3 在弹出界面填入所需信息 并点击OK保存
  • 云原生服务更换二进制调测方法

    当前我们开发的服务基本都是云原生的服务 都跑在容器中 在开发过程中 想更换二进制文件调测就相当麻烦了 今天写了一个脚本 供大家参考 bin bash set ex appName testApp appPath home appName c
  • SpringBoot整合Druid-Mybatis&SpringSecurity使用

    SpringBoot整合JDBC 创建springBoot项目时首先需要导入JDBC的支持 以及MySQL驱动
  • Vim编辑器常用命令

    Vim编辑器常用命令 Vim三种工作模式 命令模式 输入模式和编辑模式 Vim打开文件 Vim快捷方向键和以单词为单位移动 Vim插入文本 Vim查找文本 Vim替换文本 Vim删除文本 vim复制和粘贴文本 Vim保存退出文本 Vim光标
  • timestamp相减的函数 java_DB2中TIMESTAMP字段的计算

    以下内容是对 DB2 基础 日期和时间的使用 的内容进行的摘要与精练 遗憾的是 本文参考的原文已经被IBM DeveloperWorks删掉了 暂时还没找到 1 在SQL中使用DB2中的寄存器获取数据库服务器当前时间戳SELECT curr
  • 如何用ps把蓝底照片换成白色的

    用ps把蓝底照片换成白色的的具体步骤为 1 打开换白底的照片 菜单栏 调整 替换颜色 打开这个工具 2 认真看下图的圆圈所指的地方 点一下这个结果色块 我们选择一个白色色彩 3 有一个关键的一个点 就是一定要保证明度是100的 这样才会出现
  • 学习笔记-Spark环境搭建与使用

    一 20 04 Ubuntu安装 清华源ISO源 https mirrors tuna tsinghua edu cn ubuntu releases 20 04 下载链接 https mirrors tuna tsinghua edu c
  • 【整理八】

    1 说说你对Event Loop的理解 Eventloop 是一种在编程语言中常用的编程模型 用于处理任务队列中的事件 它可以被用来处理各种任务 包括网络事件 文件读写 定时器 用户界面事件等Eventloop 的工作原理是 它会按顺序处理
  • 通过进入单用户模式解决linux中的rc.local修改后无法启动的问题

    问题 本想将teamviewer这个软件随linux自启动 所以将其启动命令放在rc local中 但是重启后发现linux启动不起来了 系统前面都是正常启动的 就是无法进入帐户登陆界面 无法输入root帐号密码 不能登陆到系统 按了ctr
  • ROS系列报错与解决方法

    6 28 一 问题描述 ROS运行roscore命令后发现提示log文件 日志文件 大小超过1G 需要清理 Checking log directory for disk usage This may take awhile Press C
  • MYSQL 查看最大连接数和修改最大连接数

    MySQL查看最大连接数和修改最大连接数 1 查看最大连接数 show variables like max connections 2 修改最大连接数 set GLOBAL max connections 200 以下的文章主要是向大家介
  • 2021年 centos7.2 openssl3安装全过程

    安装关联软件包和编译工具包 yum install perl ExtUtils CBuilder perl ExtUtils MakeMaker 官网下载 https www openssl org source wget https ww
  • C++里有哪几种数据类型

    C 里有哪几种数据类型 1 基本类型 布尔型 布尔型 即bool 它的取值只能是true 真 或者false 假 分别代表非零与零 对布尔型的赋值可以直接用true或者false进行赋值 也可以用整型常量对其进行赋值 只不过整型常量赋值给布