C++知识点总结 (01):数据类型和数据类型转换

目录

  • 1、基本内置类型
    • (1)算术类型
      • A.整型
      • B.浮点型
    • (2)字面值常量
      • A.整型字面值
      • B.字符字面值
      • C.指定字面值类型
    • (3)常量
      • A.What(什么是常量)
      • B.Why(常量有什么用)
      • C.常量表达式和constexpr
  • 2、复合数据类型
    • (1)指针
      • A.What(什么是指针)
      • B.Which(有哪些指针)
    • (2)引用
      • A.What(什么是引用)
      • B.How(如何使用)
    • (3)指针和引用的关系
      • A.对立性
      • B.统一性
  • 3、枚举类型
    • (1)What(什么是枚举)
    • (2)Which & How(枚举种类和使用)
      • A.限定性枚举类型
      • B.非限定性枚举类型
    • (3)Why(枚举类型的作用)
  • 4、自定义数据类型
    • (1)类
      • A.面向对象的四大特征
      • B.What(什么是类)
      • C.Why(类的作用)
    • (2)结构体
  • 5、处理类型
    • (1)类型别名
    • (2)auto
    • (3)decltype
  • 6、数据类型转换

1、基本内置类型

(1)算术类型

bool,char(1Byte),wchar_t(2Byte),char16_t(2Byte),char32_t(8Byte)

short(2Byte),int(2Byte | 4Byte),long(4Byte),long long(8Byte)

float(4Byte,6位有效数字),double(8Byte,10位有效数字)

A.整型

bool、char、short、int、long、long long、unsigned *

B.浮点型

float、double、unsigned *

(2)字面值常量

A.整型字面值

八进制:024; 十进制:20; 十六进制:0x14

B.字符字面值

  • 单字符字面值:

‘a’、’A’、’0‘

  • 转义字符字面值:

\n、\t\v(制表符)、\'(单引号)、\"(双引号)、\a(响铃)、\b(退格符)、\?(问号)、\r(回车符)

  • 布尔字面值:

false、true

  • 指针字面值:

nullptr

C.指定字面值类型

前缀指定:

u’w’--------------------------char16_t
U’w’-------------------------char32_t
L‘w’--------------------------wchar_t
u8‘w’------------------------char

后缀指定:

120u or 120U-------------usigned
1978l or 1978L-----------long
128100000000-----------long long

128.1f----------------------float
128.1F---------------------float
1998.12L------------------long double
1998.12l------------------long double

(3)常量

A.What(什么是常量)

被const修饰关键字修饰的变量。既然是常量,那么在创建的时候就必须被初始化。
涉及到指针常量时,需区分顶层指针和底层指针
**顶层指针:**指针本身就是一个常量

int a=10;
int const *ptr = &a;

**底层指针:**指针所指向的是一个常量

const a = 10;
const int *ptr = &a;

B.Why(常量有什么用)

安全性:保护特定数据不被修改
可读性:提高代码的可读性
可维护性:便于修改字面常量的值

C.常量表达式和constexpr

What(常量表达式)

在编译过程中就得到了计算结果的表达式,且其值不会改变

如:

const int maxValue = 300; //maxValue是常量表达式
const int limit = maxValue + 20; //limit也是一个常量表达式

constexpr关键字

用constexpr关键字声明的变量,一定是一个常量

const int *p = nullptr; //p是一个指向整型常量的指针(指针本身不是常量)
consntexpr int *q = nullptr; //q本身是一个常量

2、复合数据类型

(1)指针

A.What(什么是指针)

用于存放对象地址的复合数据类型

B.Which(有哪些指针)

空指针:

 int *p = nullptr;  int *p = 0;(不指向任何对象)

void *:

void *double dAngle = -180.0;  void * p = &dAngle;(万能指针,可指向任意类型的指针)

底层指针:

const int a=10;
const int *p = &a; //指针指向的是一个常量

顶层指针:

int a = 10;
int const *p=&a; //指针本身就是一个常量类型的指针,不能被重新赋地址

(2)引用

A.What(什么是引用)

引用是变量的别名,在定义的时候就一定要被初始化。

B.How(如何使用)

int a = 10;
int &ra = a;

(3)指针和引用的关系

核心思想:指针是一个对象,而引用不是对象

A.对立性

初始化:指针可以不进行初始化;引用一定要进行初始化
重新赋值:指针可以被重新赋值;引用被初始化后不允许被重新赋值

B.统一性

两者都是对其它对象的间接访问

3、枚举类型

(1)What(什么是枚举)

本质:一组整型字面值常量

(2)Which & How(枚举种类和使用)

A.限定性枚举类型

What:

必须显式地使用作用域解析符(::)访问枚举值

How:

enum class EnumName{enum01,enum02,...}; //默认值从0开始递增

注意:限定性枚举类型禁止隐式转换,只能显式强制转换

EnumName eName = EnumName::enum01;
int iName = (int)eName;

B.非限定性枚举类型

What:

非限定性枚举值在相同作用域共享命名空间,无需作用域解析符就能访问

How:

enum WeekDay = {Monday = 1, TuesDay = 3, Wednesday, Thursday, Friday};
WeekDay wDay = Monday; //可直接访问枚举值
std::cout<<wDay<<std::endl; //打印:1
wDay = Friday;
std::cout<<wDay<<std::endl; //打印:6

(3)Why(枚举类型的作用)

用于限定可取值的范围,增加代码的可读性和可维护性

4、自定义数据类型

(1)类

A.面向对象的四大特征

谈到类,就必须讲一下面向对象,而面向对象的四大特征我们必须掌握

抽象:将现实世界中复杂的问题简化为可管理的模块或类
封装:保护对象状态不被外部直接修改,提高程序的安全性和鲁棒性
继承:提高代码的可重用性,有利于程序的维护
多态:同一方法或操作符在不同对象执行时可产生不同的行为,多态是设计模式的基础

B.What(什么是类)

一种封装了数据变量函数的自定义数据结构

C.Why(类的作用)

  • 鲁棒性和安全性:封装数据和方法,隐藏内部实现细节,暴露必要的接口给外部
  • 抽象和建模:用于解决现实世界中的问题
  • 重用性:继承允许代码重用

(2)结构体

结构体struct和类的唯一区别:成员默认的访问权限不同,类的默认权限是private,而struct的默认权限是public

5、处理类型

(1)类型别名

typedef:

typedef unsigned Year;
Year yearNow = 2024; //Year就是double的别名

using:

using Year = int;
Year yearNow = 2024;

(2)auto

让编译器替我们分析表达式的数据类型

std::vector<int> vYear{1949, 1976, 1978, 1998, 2001, 2008, 2015, 2020, 2024, 2026};
for(auto &year: vYear)
{
	std::cout<<year<<std::endl;
}

(3)decltype

根据已知的变量推断类型

const int year = 1978;
decltype(year) yNow = 2024;

6、数据类型转换

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/755609.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

无人机无刷电机理论教学培训课程

本文档为一份关于Brushless电机理论的详细教程&#xff0c;由TYTO Robotics编制&#xff0c;旨在帮助用户理解brushless电机的工作原理、特性以及如何通过实验测定其关键参数Kv和Kt。文档首先介绍了brushless电机的基本组成&#xff0c;包括静止的定子和旋转的转子&#xff0c;…

python循环结构

1.while 循环 语句&#xff1a; while 循环条件表达式&#xff1a; 代码块 else&#xff1a; 代码块 小练&#xff1a; 设计一百以内的偶数相加 n 0 while n < 100:n 1if n % 2 0 :print(n) 判断是不是闰年&#xff08;四年一润和百年不润&#xff0c;或者四百年一润&am…

Linux平台下RTSP|RTMP播放器如何跟python交互投递RGB数据供视觉算法分析

技术背景 我们在对接Linux平台RTSP播放模块的时候&#xff0c;遇到这样的技术需求&#xff0c;开发者需要把Linux RTSP播放器拉取的数据&#xff0c;除了实时播放外&#xff0c;还要投递给python&#xff0c;用于视觉算法分析。 技术实现 Linux平台RTSP、RTMP直接播放不再赘…

GoLang语言

基础 安装Go扩展 go build 在项目目录下执行go build go run 像执行脚本文件一样执行Go代码 go install go install分为两步&#xff1a; 1、 先编译得到一个可执行文件 2、将可执行文件拷贝到GOPATH/bin Go 命令 go build :编译Go程序 go build -o "xx.exe"…

React+TS前台项目实战(二十一)-- Search业务组件封装实现全局搜索

文章目录 前言一、Search组件封装1. 效果展示2. 功能分析3. 代码详细注释4. 使用方式 二、搜索结果展示组件封装1. 功能分析2. 代码详细注释 三、引用到文件&#xff0c;自行取用总结 前言 今天&#xff0c;我们来封装一个业务灵巧的组件&#xff0c;它集成了全局搜索和展示搜…

基于Java的茶文化交流系统【附源码+LW】

摘 要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔阂给消除了&#xff0c;让整个世界都可以即时通话…

Meta发布LLM编译器 称将改变我们的编程方式

Meta发布了Meta 大型语言模型&#xff08;LLM&#xff09;编译器&#xff0c;这是一套强大的开源模型&#xff0c;旨在优化代码并彻底改变编译器设计。这项创新有望改变开发人员优化代码的方式&#xff0c;使代码优化更快、更高效、更具成本效益。 在将大型语言模型应用于代码和…

基于SpringBoot+Vue的大药房管理系统(带1w+文档)

基于SpringBootVue的大药房管理系统(带1w文档) 本系统主要包括管理员和用户两个用户角色&#xff1b;主要包括&#xff1a;首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;保健品分类管理&#xff0c;药品分类管理&#xff0c;药品信息管理&#xff0c;疫情常识管理…

鸿蒙登录页面及页面跳转的设计

目录 任务目标任务分析任务实施1.新建工程项目HMLogin2.设计登录页面Index.visual3.设计第二个页面SecondPage4.修改Index.ets代码5.修改SecondPage.ets代码6.运行工程 任务目标 设计一个简单的登录页面&#xff0c;要求可以将第一页的登录信息&#xff0c;传递到第二个页面&a…

3.js - 反射率(reflectivity) 、折射率(ior)

没啥太大的感觉 反射率 reflectivity 概念 反射率&#xff1a;指的是&#xff0c;材质表面反射光线的能力反射率&#xff0c;用于控制材质对环境光&#xff0c;或光源的反射程度反射率越高&#xff0c;材质表面反射的光线越多&#xff0c;看起来就越光亮使用 适用于&#xff0…

AIGC实战:LLaMA2打造中文写作利器——数据准备与模型训练全攻略

目录 一、下载并加载中文数据集二、中文数据集处理 1、数据格式 2、数据集处理之tokenizer训练格式 1&#xff09;先将一篇篇文本拼凑到一起&#xff08;只是简单的拼凑一起&#xff0c;用于训练tokenizer&#xff09; 2&#xff09;将数据集进行合并 3、数据集处理之模型&am…

嵌入式学习——硬件(ARM体系架构)——day51

1. S3C2440基础知识——一条指令四个字节 1.1 定义 S3C2440 是三星&#xff08;Samsung&#xff09;公司设计的一款基于 ARM920T 核心的微处理器&#xff0c;广泛应用于嵌入式系统中&#xff0c;属于三星的 S3C24xx 系列。 1.2 处理器核心 ARM920T&#xff1a;基于 ARM v5T …

Shell 脚本编程保姆级教程(下)

七、Shell 流程控制 7.1 if #!/bin/bash num1100 if test $[num1] 100 thenecho num1 是 100 fi 7.2 if else #!/bin/bash num1100 num2100 if test $[num1] -eq $[num2] thenecho 两个数相等&#xff01; elseecho 两个数不相等&#xff01; fi 7.3 if else-if else #!/…

Java框架的原理主要基于以下几个核心

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

算法力扣刷题记录 二十三【151.翻转字符串里的单词】

前言 字符串篇&#xff0c;继续。 记录 二十三【151.翻转字符串里的单词】 – 一、题目阅读 给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词…

Type-C接口OTG转接器的应用与发展

随着科技的飞速发展&#xff0c;智能移动设备已成为我们生活中不可或缺的一部分。而在这些设备的连接与数据传输中&#xff0c;Type-C接口以其高效、便捷的特性逐渐占据了主导地位。OTG&#xff08;On-The-Go&#xff09;技术则进一步扩展了Type-C接口的功能&#xff0c;使得设…

融资担保行业数字化转型探索与实践

融资担保行业数字化转型探索与实践 随着全球经济的快速发展和科技的不断进步&#xff0c;数字化转型已成为各行各业提升竞争力和实现可持续发展的必然选择。融资担保行业作为金融体系中的重要组成部分&#xff0c;也在积极探索和实践数字化转型&#xff0c;以更好地服务中小微企…

基于Datax开发支持瀚高数据库的插件_插件开发_以及部署---国产瀚高数据库工作笔记006

如果想直接使用,开发好的插件,那么可以去下载笔者上传的,打包好的插件,直接放入到 datax安装目录的./datax/plugin/reader 或者writer中就可以了 https://download.csdn.net/download/lidew521/89495306 https://download.csdn.net/download/lidew521/89495301这两个一个…

多功能引流必备神器!评论区关键词采集!斗音平台引流

大家好我今天带来的这款软件&#xff0c;就像是抖音引流界的“多功能引流神器”&#xff0c;功能全面到让你眼花缭乱&#xff0c;而且操作简便到连你的宠物金鱼都能学会&#xff01; 下面开看看都有哪些功能​&#xff1a; 高级截流拓客功能&#xff1a;想象一下&#xff0c;你…

性能之巅的巴比达内网穿透访问单位的web管理系统

在这个数字化飞速发展的时代&#xff0c;作为一名IT部门的小主管&#xff0c;我经常面临着一项挑战&#xff1a;如何在外网环境下高效、安全地访问我们单位内部部署的Web管理系统。这不仅仅是关乎我个人的工作效率&#xff0c;更是影响到整个团队能否快速响应市场需求的关键。直…