C++02 变量和基本类型

基本类型 

字、字节、bit、Byte之间的关系
 字 word
 字节 Byte
 位 bit
1字 = 2字节  <---> 1word = 2Byte
1字节 = 8位 <---> 1Byte = 8bit
1Byte = 8bits
1KB = 1024Bytes
1MB = 1024KB
1GB = 1024MB

#include <iostream>
using namespace std;
int main()
{/*字符和字符串字面值* 使用空格连接,继承C* 字符字面值:单引号'A'* 字符串字面值:双引号"Hello"* 转义序列:\n、\t* 布尔字面值:true、false* 指针字面值:nullptr*///注意:字符串是常量字符构成的数组,结尾处以'\0'结束,所以字符串类型实际上长度比内容+1char str[20];cin >> str; //输入"hello world"cout << sizeof(str)<< endl; //20cout << strlen(str) << endl;//5} 

 写道这里,想到一个求字符串长度的问题 --sizeof()、size()、strlen()、length()如何区分

sizeof():操作数所占空间的字节数大小,是操作符,不是函数!!参数:类型、指针、函数

在编译时计算,不能用来返回动态分配的内存空间的大小!

输入"hello world",sizeof(str)的结果是20,sizeof()的作用是计算字符数组str所占用空间字节数的大小,进一步说明了sizeof()在编译时计算。

strlen():计算字符串长度 从第一个字符到第一个'\0'之间的元素个数* 输入"hello world",strlen(str)的结果是5,并不是11

	string str1 = "hello world";cout << str1.size() << endl;//11cout << str1.length() << endl;//11
char a[] = "hello world";
cout << sizeof(a) << endl;//12

sizeof():计算的时候包含'\0';


变量

读到这里的时候遇到了一个不太懂的问题:

默认初始化:定义时没有指定初始化会被默认初始化,在函数体内部的内置类型变量将不会被初始化

#include <iostream>
using namespace std;int a;
int main()
{int b;cout << a << endl;//0cout << b << endl;//error C4700: 使用了未初始化的局部变量“b”return 0;
} 

C++分区:栈区、堆区、全局静态区、常量区

a为全局变量,存储于全局静态区

b为局部变量,存储于栈区,局部变量不能默认初始化

全局变量可以统一清零,若栈区加了清零操作,会使函数调用等操作缓慢,编译器取消栈区统一清零的操作。

 左值、右值、左值引用、右值引用

	int a = 1;1 = a; //表达式必须是可修改的左值

a是一个左值,1是一个右值

	int a = 1;int b = 5;a = b;cout << a << endl;//5cout << b << endl;//5

 C++中的左值也可以当右值使用


在这里我又又又遇到一个问题,就是GitHub.com总是打不开的情况!!!! 附上解决办法

1、打开cmd(win+R,输入cmd)

2、ping github;这一步的目的是得到github的ip地址

3、复制ip地址,打开电脑的C:\Windows\System32\drivers\etc,用记事本打开hosts文件,加上github的ip地址+github域名

这个时候问题又又又来了,我没有权限保存不了hosts,解决办法:

4、右键hosts文件的属性

到这一步,我的github.com就可以正常运行啦!

 


复合类型

 引用

  • 引用:引用是一个对象的别名,引用类型引用另一种类型。 int &b = a
  • 引用必须初始化。
  • 引用和其初始值绑定在一起,不是拷贝。一旦定义就不能更改绑定为其他的对象。

指针

  • int*p:指向int类型对象的指针
  • 指针存放对象的地址
  • 获取对象的地址:int a = 5;int *p = &a; &:取地址符
  • 指针的类型与所指向的对象类型必须一致。
  • 指针的四种状态:
  1. 指向一个对象;
  2. 指向紧邻对象的下一个位置;
  3. 空指针;
  4. 无效指针;(对无效指针的操作会引发异常)
  • 指针访问对象:*p;*是解引用符
  • 空指针不指向任何对象。使用int *p = nullptr;使用空指针。
  • void* 指针可以存放任意对象的地址。因无类型,仅操作内存空间,对所存对象无法访问。
  • 建议:初始化所有指针。
  • int *p1,p2; *是对p1的修饰,所以p2是int型不是指针。

引用和指针的区别,面试常考


const:定义一些不能被改变值的变量

  • const对象必须初始化,且不能被改变
  • const变量默认不能被其他文件访问,非要访问,必须在指定const定义之前加extern。
  • 要想在多个文件中使用const变量共享,定义和生命都加extern关键字。
  • const的引用:const int &a = b;可以读取但不能修改a

指针常量和常量指针

指针常量:int *const p;

int a,b;
int * const p = &a;
*p = 9;//正确
p = &b; //错误

总结:指针常量,指向不可改,内容可改

常量指针 : const int *p;

int a,b;
const int *p = &a;
*p = 9;//错误
p = &b;//正确

总结:常量指针,指向可改,内容不可改


顶层const和底层const

  • 顶层 const:可以修饰所有数据类型,表示该类型的对象本身是常量
  • 底层 const:与指针和引用类型有关,表示地址所指向的对象是常量

    底层const==>指针常量
    顶层const==>常量指针


类型别名

  • typedef:定义类型的同义词,typedef int INTER;
  • 新标准别名:别名声明:using int = INTER;(C++11)

对于复合类型不能代回原式进行理解

例如:

typedef char* p;//p是char*的别名

const p str = 0;//指向char的常量指针

如:const char * str = 0;//指向const char的指针

但是可代回后加括号

const (char*)str = 0;


 auto类型说明符 C++11

  • auto类型说明符:让编译器自动退u按类型
  • 一条声明语句只能有一个数据类型,一个auto声明多个变量时只能相同的变量类型 auto a = 1,b = 0.33 //错误

decltype类型指示符(C++11)

  • 从表达式的类型推断出要定义的变量的类型;
  • decltype:选择并返回操作数的数据类型;
  • decltype(f())sum = x;推断sum的类型是函数f()的返回类型;
  • 如果对变量加括号,编译器会将其认为是一个表达式,如 int i -->(i),则decltype((i))得到结果为int& 引用;
  • 赋值是会产生引用的一类典型表达式,引用的类型就是左值的类型,如果i是int,则表达式 i =  x 的类型是int&。

自定义数据结构

struct

  • 类可以以关键字struct开始,紧跟类名和类体
  • 类数据成员:类体定义类的成员
  • C++11:可以为类数据成员提供一个类内初始值

编写自己的头文件

  • 头文件通常包含只能被定义一次的实体:类、const、constexpr变量(常量表达式:指值不会改变,且在编译过程中就能得到计算结果的表达式)

预处理器概述:

  • 预处理器:确保头文件多次包含仍能安全工作
  • 预处理器看到 #include标记时,会用指定的头文件内容代替 #include
  • 头文件保护符:头文件保护符依赖于预处理变量的状态:已定义和未定义。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Brand Finance Retail 100 2024

近日,全球领先的品牌价值评估咨询机构Brand Finance发布了其年度行业研究报告——《Brand Finance Retail 100 2024》。该报告深入分析了全球最有价值的零售品牌及其品牌实力,揭示了品牌价值的变化趋势和品牌强度的排名情况。报告指出,尽管许多顶级零售品牌在品牌价值上遭遇了下…

表达式求值的相关语法知识(C语言)

目录 整型提升 整型提升的意义 整型提升规则 整型提升实例 算术转换 赋值转换 操作符的属性 C语言的语法并不能保证表达式的执行路径唯一&#xff01;&#xff01;&#xff01; 问题表达式 整型提升 C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这…

昇思25天学习打卡营第8天 | 保存与加载 使用静态图加速

保存与加载 在训练网络模型的过程中&#xff0c;实际上我们希望保存中间和最后的结果&#xff0c;用于微调&#xff08;fine-tune&#xff09;和后续的模型推理与部署&#xff0c;下面是介绍如何保存与加载模型。 先定义一个模型用&#xff1a; import numpy as np import m…

每个 Node.js 开发人员都应该知道的13个库(上)

1. Sequelize Sequelize是一个基于promise的Node.js对象关系映射器&#xff08;ORM&#xff09;&#xff0c;它使开发人员更容易使用关系数据库。 支持PostgreSQL&#xff0c;MySQL&#xff0c;MariaDB&#xff0c;SQLite和更多数据库。 Sequelize使用JavaScript对象对数据库…

@PathVariable注解的使用及源码解析

前言 PathVariable 注解是我们进行JavaEE开发&#xff0c;最常见的几个注解之一&#xff0c;这篇博文我们以案例和源码相结合&#xff0c;帮助大家更好的了解PathVariable 注解 使用案例 1.获取 URL 上的值 RequestMapping("/id/{id}") public Object getId(Path…

【Python机器学习】单变量非线性变换

添加特征的平方或立方可以改进线性回归模型&#xff0c;其他变换通常也对变换某些特征有用&#xff0c;特别是应用数学函数&#xff0c;比如log、exp、sin等。虽然基于树的模型只关注特征的顺序&#xff0c;但是线性模型和神经网络依赖于每个特征的尺度和分布。如果在特征和目标…

首次线下联合亮相!灵途科技携手AEye、ATI亮相2024 EAC 易贸汽车产业大会

6月22日&#xff0c;2024 EAC 易贸汽车产业大会在苏州国际博览中心圆满落幕&#xff0c;泛自动驾驶领域光电感知专家灵途科技携手自适应高性能激光雷达解决方案全球领导者AEye公司&#xff08;NASDAQ:LIDR&#xff09;及光电器件规模化量产巨头Accelight Technologies&#xff…

量块检定校准中,如何调整好校准所需的温度条件?

量块是计量中常用的标准件&#xff0c;在日常使用中可以作为各类仪器校准中的辅助工具&#xff0c;而量块自身如果进行检定校准&#xff0c;其校准过程中温度的条件就是需要多次进行调控&#xff0c;因为量块的校准需要在恒温环境下进行&#xff0c;量块的精确度和实验室环境的…

触摸屏与罗克韦尔AB PLC之间 ModbusTCP/IP无线以太网通讯实例

在实际系统中&#xff0c;同一个车间里分布多台PLC&#xff0c;通过触摸屏人机界面集中控制。通常所有设备距离在几十米到上百米不等。在有通讯需求的时候&#xff0c;如果布线的话&#xff0c;工程量较大耽误工期&#xff0c;这种情况下比较适合采用无线通信方式。本方案以组态…

操作系统面试篇一

很多读者抱怨计算操作系统的知识点比较繁杂&#xff0c;自己也没有多少耐心去看&#xff0c;但是面试的时候又经常会遇到。所以&#xff0c;我带着我整理好的操作系统的常见问题来啦&#xff01;这篇文章总结了一些我觉得比较重要的操作系统相关的问题比如 用户态和内核态、系统…

昇思25天学习打卡营第9天 | 静态图加速

内容介绍&#xff1a; AI编译框架分为两种运行模式&#xff0c;分别是动态图模式以及静态图模式。MindSpore默认情况下是以动态图模式运行&#xff0c;但也支持手工切换为静态图模式。两种运行模式的详细介绍如下&#xff1a; 动态图模式&#xff1a; 动态图的特点是计算图的…

【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF

【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF 前言一、Stirling-PDF介绍1.1 Stirling-PDF简介1.2 Stirling-PDF功能 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四…

详解Elastic Search高速搜索背后的秘密:倒排索引

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 全文搜索属于最常见的需求&#xff0c;开源的 Elasticsearch &#xff08;以下简称 Elastic&#xff09;是目前全文搜索引…

Python应用开发——30天学习Streamlit Python包进行APP的构建(10)

st.map 显示一张叠加了散点图的地图。 它是 st.pydeck_chart 的包装器&#xff0c;用于在地图上快速创建散点图表&#xff0c;并具有自动居中和自动缩放功能。 使用该命令时&#xff0c;Mapbox 会提供地图瓦片来渲染地图内容。请注意&#xff0c;Mapbox 是第三方产品&#x…

海云安参编《数字安全蓝皮书 》正式发布并入选《2024中国数字安全新质百强》荣膺“先行者”

近日&#xff0c;国内数字化产业第三方调研与咨询机构数世咨询正式发布了《2024中国数字安全新质百强》&#xff08;以下简称百强报告&#xff09;。海云安凭借在开发安全领域的技术创新力及市场影响力入选百强报告“新质百强先行者” 本次报告&#xff0c;数世咨询经过对国内8…

用Verilog实现4位计数器(时序逻辑)

用Verilog实现4位计数器。&#xff08;时序逻辑&#xff09; 实验目的&#xff1a; 通过用Verilog实现4位计数器&#xff0c;进一步熟悉Verilog的语法和时序逻辑电路。 实验描述&#xff1a; 输入&#xff1a; Clock&#xff1a;如果计数器enable信号为1&#xff0c;那么在…

多功能气象传感器的工作原理

TH-WQX9多功能气象传感器是一种集成了多种传感器技术的气象观测装置&#xff0c;旨在同时测量和监测大气中的多个气象要素&#xff0c;以提供全面、准确的气象信息。以下是关于多功能气象传感器的详细介绍&#xff1a; 技术原理 多功能气象传感器采用多种传感器技术相结合&…

day01-项目介绍及初始化-登录页

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 day01-项目介绍及初始化-登录页一、人力资源项目介绍1.1项目架构和解决方案主要模块解决的问题 二、拉取项目基础代码1.引入库2.升级core-js版本到3.25.5按照完整依…

LSTM时间序列基础学习

时间序列 时间序列可以是一维&#xff0c;二维&#xff0c;三维甚至更高维度的数据&#xff0c;在深度学习的世界中常见的是三维时间序列&#xff0c;这三个维度分别是&#xff08;batch_size,time_step,input_dimensions&#xff09;。 其中time_step是时间步&#xff0c;它…

jenkins中执行docker命令

1. 修改docker.sock文件的所属组 命令如下&#xff1a; sudo chown root:root docker.sock 2. 对这个文件赋予权限&#xff0c;供其他用户使用&#xff0c;给定权限命令如下&#xff1a; sudo chmod orw docker.sock 3. docker容器映射 这里需要两个文件&#xff1a; 一个…