C++与C基础重叠部分
Cmake
- CPP程序开发过程
- 计算机硬件—>机器语言—>汇编—>cpp
- cpp—>机器(gcc)
- Make(makefile)—>本地智能批处理翻译机制
- Cmake—>跨平台生成不同设备上的makefile进行执行
Cpp基础学习
基本知识
- 基本格式
#include<iostream>
using namespace std;
int main(){cout << "hello cpp" << endl;system("pause");return 0;
}
- 变量
- 意义
- 方便管理内存,给一段指定内存空间起名
- 16进制可以表示一个内存空间—>给内存起名称a—>a就是变量
- 创建
- 数据类型 变量名 = 变量初始值
- 意义
- 常量
- 不可修改的数据
- 定义方式
- #define宏定义—#define 常量名 常量值
- const修饰变量 const 数据类型 常量名 = 常量值
- 关键字
- 有特殊含义且不能被再被命名—不要用关键字进行命名
- 标识符名规则
- 标识符不可以是关键字
- 标识符只能由字母数字下划线
- 第一个字符不能为数字
- 标识符区分大小写
数据类型
- 存在意义—给变量分配合适的内存空间
- sizeof—输出字节—取决于多少位的操作系统—统计数据类型所占内存大小
- 语法—sizeof(数据类型或者变量)
- 有效数字—所有展示数字的位数
- 实型—浮点型
- float—4字节
- double—8字节
- 默认定义数据是double因此,float f1 = 3.14f这样才能真正定义为float
- 一般显示6位有效数字
- 字符型—表示单个字母—占用一个字节—char
- 单引号
- 字符型变量并不是把字符本身放入内存中存储,而是将对用的ascii编码放入到存储单元
- 查看ascii—cout<< (int)ch << endl;
- 常见
- a—97
- A—65
- 转义字符
- 用于表示一些不能显示出来的ascii字符
- 常见
- \n—换行
- \t—水平制表—8个字符空间
- //—反斜杠/必须输出两个
- 字符串型
- 两种风格
- char 变量名[] = “字符串” — C风格
- string 变量名 = “字符串” — CPP风格 — #include
- 两种风格
- 布尔数据类型
- true
- false
- 数据的输入
- 用于从键盘获取数据
- cin >> 变量
- 用于从键盘获取数据
int a = 0;
cout<< "请输入a: \n" << endl;
cin >> a;
新型类型转换方式
- c语言—(type)(expression)
- 缺点
- 这种类型转换容易产生不良后果
- 在源码中无法快速定位所有使用强制类型转换的语句
- cpp将强制类型转换分为四种不同类型
- 语法
- ***_cast(expression)
- 语法
- 四个不同的关键字
- static_cast—静态类型转换
- 用于基本类型间的转换
- 不能用于基本类型指针间的转换
- 用于有继承关系类对象之间的转换和类指针之间的转换
- const_cast
- 用于去除变量的只读属性
- 强制转换的目标类型必须是指针或引用
- dynamic_cast—只能用于指针间
- 用于有继承关系的类指针
- 用于有交叉关系的类指针间转换
- 具有类型检查功能
- 需要虚函数的支持
- reinterpret_cast
- 用于指针类型间的强制转换
- 用于整数和指针类型间的强制转换
- static_cast—静态类型转换
运算符
- 算术运算符
- 赋值运算符
- 比较运算
- 逻辑运算
流程结构
- 选择结构
- if
- 三目运算符
- switch
- switch中表达式类型只能是整型或者字符型
- switch不可以判断区间
- 循环结构
- while
- dowhile
- for
- 跳转语句
- break
- continue
- goto
- goto 标记
一维数组
- 特点
- 连续内存空间
- 每个数据元素都是相同的
- 定义
- 数据类型 数组名[数组长度]
- 数据类型 数组名[数组长度] = {数值1, 数值2…}
- 数据类型 数组名[] = {值1, 值2,…};
- 数组名的用途
- 可以统计整个数组在内存中的长度
- 可以获取数组在内存中的首地址
int arr[] = {1,2,3}
int len = sizeof(arr)
int ev_len = sizeof(arr)/sizeof(arr[0])
- 数组首地址访问的两种形式
- cout << arr
- cout << &arr[0]
- 元素和地址访问不一样
二维数组
- 定义方式
- 数据类型 数组名称[行数][列数]
- 数据类型 数组名称[行数][列数] = {{1,2,3},{2,3,4}}
- 数据类型 数组名称[行数][列数] = {1,2,3,2,3,4}
- 数据类型 数组名[][列数] = {1,2,3,2,3,4}
- 数组名称
- 查看二维数组所占内存空间
- 查看首地址
函数
- 值传递问题
- 形参发生变化实参不会变化
- 函数声明
- int max(int a, int b);
- 分文件编写
- .h文件中包含.cpp中的所有库函数依赖,只声明不定义
- .cpp关联后只需要定义即可
指针
- 概念
- 通过指针间接访问内存
- 通过指针变量记录内存的地址编号
- 指针就是用来保存地址
- 定义指针
- 数据类型 *指针变量名
- 初始化方式
- 数据类型 *p = &变量
- *p代表解应用—可以修改数据
- 指针所占的内存大小
- 32位操作系统下占用4个字节—sizeof后不论什么类型只要是指针,占的内存只依赖于操作系统的大小
- const修饰指针
- const修饰指针—常量指针—const int * q = &a—指针的指向可以改,但是指针指向的数值不能改
- const修饰常量—指针常量—int * const p = &a—指针的指向不可以改,但是指针指向的数值可以改
- const修饰指针同时又修饰常量—const int * const p = &a—指针的指向和指针指向的值都不可以改
指针和其他的配合使用的配合使用
- 利用指针访问数组中的元素—数组名就是数组第一个元素的地址
- 指针和函数—地址传递—实现对调用主函数变量的修改
结构体
- 概念—结构体属于用户自定义的数据类型,允许用户存储不同的数据类型
struct student
{string name;int age;
};
// 直接定义
struct student
{string name;int age;
}ss;
- 调用和变量定义
struct student s1;
student ss; //可省略struct
struct student s2 = {...};
s1.name = "zhangsan";
- 结构体数组
struct student s1[] = {{"zhangsan", 18},{"lisi", 22}
};
s1[1].age = 32;
- 结构体指针
struct student s1[] = {{"zhangsan", 18},{"lisi", 22}
};
struct student * ss = s1;
cout << ss->age << endl;
- 结构体嵌套结构体
struct student {string name;int age;
};
struct teacher t1{string name;int age;struct student s1;
};
- 结构体做函数参数
- 值传递—形参改变实参不变
- 地址传递—形参变实参也变
- 将值传递改为地址传递可以保证传参过程中开销较小
- 但是这种方式会导致函数内可以改变结构体信息
- 解决—const加入
- 在函数形参加上const即可 void test(const int *s)
相关文章:
C++与C基础重叠部分
Cmake CPP程序开发过程 计算机硬件—>机器语言—>汇编—>cppcpp—>机器(gcc)Make(makefile)—>本地智能批处理翻译机制Cmake—>跨平台生成不同设备上的makefile进行执行 Cpp基础学习 基本知识 基本格式 #include<iostream> using namespace std;…...

神经网络基础部件-卷积层详解
前言 在全连接层构成的多层感知机网络中,我们要通过将图像数据展平成一维向量来送入模型,但这会忽略了每个图像的空间结构信息。理想的策略应该是要利用相近像素之间的相互关联性,将图像数据二维矩阵送给模型中学习。 卷积神经网络(convolu…...

【计算机网络】HTTPS协议原理
文章目录一、认识HTTPS协议二、为什么要发明HTTPS三、HTTP与HTTPS的区别四、常见的加密方式1. 对称加密2. 非对称加密3. 数据摘要4. 数字签名五、HTTPS的原理探究方案1:只使用对称加密方案2:只使用非对称加密方案3:双方都使用非对称加密方案4…...

21岁,华科博士在读,我的赛事Top经验
Datawhale干货 作者:vaew,华中科技大学,博士二年级在读简介笔者vaew,21岁,现为华中科技大学机械科学与工程学院陶波教授课题组博士二年级学生。主要研究方向是基于视触融合的机器人灵巧操作。学业之余的研究兴趣包括图…...

基于ThinkPHP6.0+Vue+uni-app的多商户商城系统好用吗?
likeshop多商户商城系统适用于B2B2C、多商户、商家入驻、平台商城场景。完美契合平台自营联营加盟等多种经营方式使用,系统拥有丰富的营销玩法,强大的分销能力,支持官方旗舰店,商家入驻,平台抽佣商家独立结算ÿ…...
Linux中断
文章目录 前言一、Linux 中断介绍二、中断上文和中断下文三、中断相关函数1 获取中断号相关函数2.申请中断3.释放中断4.中断处理函数四.中断下文之 tasklet1.概念2.Linux 内核中的 tasklet 结构体:3.使用步骤4.相关函数a.初始化 tasklet结构体b.调度 taskletc.杀死 tasklet总结…...

Excel+SQL实战项目 - 餐饮业日销售情况分析仪
目录1、要完成的任务2、认识数据3、SQL数据加工4、excel形成分析仪1、要完成的任务 目标:结合SQL和excel实现餐饮业日销售情况分析仪,如下表: 认识分析仪: 切片器:店面 分为四部分:KPI 、组合图、饼图、数…...

电商导购CPS,京东联盟如何跟单实现用户和订单绑定
前言 大家好,我是小悟 做过自媒体的小伙伴都知道,不管是发图文还是发短视频,直播也好,可以带货。在你的内容里面挂上商品,你自己都不需要囤货,如果用户通过这个商品下单成交了,自媒体平台就会…...

Redis学习【6】之BitMap、HyperLogLog、Geospatial操作命令 (1)
文章目录前言BitMap 操作命令1.1 BitMap 简介1.2 setbit1.3 getbit1.4 bitcount1.5 bitpos[pos:position]1.6 bitop1.7 应用场景二 HyperLogLog 操作命令2.1 HyperLogLog 简介2.2 pfadd2.3 pfcount2.4 pfmerge2.5 应用场景三 Geospatial【地理空间】操作命令3. 1 Geospatial 简…...

JAVA实现心跳检测【长连接】
文章目录1、心跳机制简介2、心跳机制实现方式3、客户端4 、服务端5、代码实现5.1 KeepAlive.java5.2 MyClient.java5.3 MyServer5.4 测试结果1、心跳机制简介 在分布式系统中,分布在不同主机上的节点需要检测其他节点的状态,如服务器节点需要检测从节点…...
python3.9安装和pandas安装踩坑处理
0、先决条件:系统内最好先安装有gcc、libffi-devel等 1、安装包下载 https://www.python.org/downloads/source/ 2、解压安装包并上传到/usr/local/python3.9 3、打开shell cd /usr/local/python3.9要先把python3.9的所有文件复制到/usr/local/python3.9才会成功…...

2023.2.15每日一题——867. 转置矩阵
每日一题题目描述解题核心解法一:二维表示 模拟解法二:一维表示 模拟题目描述 题目链接:867. 转置矩阵 给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。 矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵…...

【人脸识别】Partial-FC:让你在一台机器上训练1000万个id人脸数据集成为可能!
论文题目:”Killing Two Birds with One Stone: Efficient and Robust Training of Face Recognition CNNs by Partial FC“ -CVPR 2022 代码地址:https://arxiv.org/pdf/2203.15565.pdf 代码地址:https://github.com/deepinsight/insightfac…...
递归方法读取任意深度的 JSON 对象的键值
有以下json字符串 {"name":"John","age":30,"address":{"city":"New York","state":"NY","zip":"10001","coordinates":{"latitude":40.712776,&q…...

黑马redis学习记录:分布式锁
一、基本原理和实现方式对比 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行…...
对React-Fiber的理解,它解决了什么问题?
对React-Fiber的理解,它解决了什么问题?Fiber用来解决什么问题?Fiber是什么?Fiber是如何解决问题的?Fiber用来解决什么问题? JavaScript引擎和页面渲染引擎两个线程是互斥的,当其中一个线程执行…...

【Linux】初学Linux你需要掌握这些基本指令(二)
目录 1.man指令 2.cp指令 3.mv指令 4.tree指令 5.echo指令 6.more指令 7.less指令(重要) 8.head与tail指令 9.date指令 显示时间常用参数: 设置时间常用参数: 10.cal指令 11.find & whereis & which指令 …...

Linux中VI/VIM 编辑器
1、概述所有Linux系统都会内置vi文本编辑器vim是vi的升级版,可以主动以字体颜色分辨语法的正确性,代码补完和编译,错误跳转等功能。2、vi和vim的三种模式基本上 vi/vim 共分为三种模式,分别是一般模式、编辑模式、命令模式2.1、一…...

PDF怎么转换成Word?两种PDF免费转Word方法推荐
不知道你们有没有发现,我们在网上下载的很多资料都是PDF格式的,尽管PDF文件也可以通过专门的PDF编辑器来编辑,但是PDF文档作为版式文档,编辑起来还是存在很多局限性,所有当我们需要大量编辑修改文档的时候,…...

极兔一面:Dockerfile如何优化?注意:千万不要只说减少层数
说在前面 在40岁老架构师 尼恩的读者交流群(50)中,面试题是一个非常、非常高频的交流话题。 最近,有小伙伴面试极兔时,遇到一个面试题: 如果优化 Dockerfile? 小伙伴没有回答好,只是提到了减少镜像层数。…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...