C与C++的区别,类型转换,引用
1.从C到C++
语言的区别
C语言
编译性语言
面向过程语言灵活
移植性好
效率高
shell
解释性语言
面向过程语言Linux运维
C++
编译性语言
面向对象面向对象语言效率最高的
应用领域:系统开发(APP开发,服务器开发),引擎开发,游戏开发,嵌入式开发,GUI界面开发。
python
解释性语言
面向对象人工智能,绝大部分都是python开发的
应用领域:系统开发(APP开发,服务器开发),游戏开发,运维,爬虫,大数据,GUI界面开发,人工智能
面向过程
把需求/问题,拆解成一个个步骤
程序=数据结构+算法
面向对象
将需求/问题,抽象成多个对象
程序=对象+对象间的通信机制
2.C++与C的差异
编译一个C++程序
C++的文件后缀
有很多:.C,.cc, .cpp, .c++, …
推荐使用:.cpp
原因:通用。各种操作系统,各种IDE软件都是识别。
编译
Linux:g++
注意:理论上C语言用gcc,C++用g++。
windows:MinGW
IDE
QT
Vscode
Dev-c++
。。。
2.1更加严格的语法检查
1.更加严格的类型检查
char a = 'A'; int *q = &a;char *p = malloc(1);c++会直接报错2.更加严格的函数形式
1.返回值如果函数不是void,那么需要返回值,否则报警告 2.形参如果没写,默认是void。不能传实参,否则报错3.不允许同名的全局变量
int a; int a;C++会直接报错4.可以对寄存器类型取地址
只要编译器发现你有这个操作,register变成auto5.新增布尔(bool)类型
true--1 false--0
2.2const
C:
对于C语言来说,const只修饰变量名
C++:
有点类似于#define,在预处理的阶段进行替换
1.绝对的常量,不能直接修改
2.必须初始化
3.可以间接修改,volatile(易变的)
volatile const int var = 10; // 必须定义在其他文件 在本文件中,extern引入和宏常量的区别:
1.宏的边缘效应
2.错误检查
推荐各位,使用const而不是宏常量
定义及初始化
左值引用–引用普通的变量
<存储类型> <数据类型> &引用名;int a = 10;
int &r = a;
右值引用–引用临时变量
int &&r;
移动构造。
使用
和普通变量名一样使用
r+=10;
特点
1.必须初始化,没有空引用。(空引用相当于是野指针)
2.引用在初始化后,不能引用其他空间。(只会修改内容)
3.一个变量可以被多次引用。(一个人,可以有很多外号)
4.不能直接引用地址类型(破坏了引用的使用规则)
int * (&qqq) = p;*qqq = 777;给一个指针取别名
引用和函数
作为参数
相当于地址传递,获取的是实参的空间
和变量名一样使用
作为返回值
1.可以作为左值
fun_referance() = 99; r = 99; 修改引用的内容2.如果返回局部变量,需要加static。
2.5函数高级
内联函数
也叫做内嵌函数
是什么?
就是一个函数
在计算机编译阶段,将函数的代码拷贝到函数的调用处
有什么用?
以空间换时间
定义
inline void fun()
{}
特点
优势:减少函数的跳转,效率更高
劣势:代码量更大
0.相当于对编译器的一个建议
1.代码量很小(一般是5条语句以下)
2.频繁使用
3.声明和定义必须写在同一个文件里面(计算机需要在编译时,知道代码长什么样)
可以看汇编代码,来验证内联函数
和宏函数的区别
1、宏函数在预处理阶段,进行替换。内联函数在编译时进行替换。
2、内联函数本质上还是函数,编译器会检查语法错误
默认参数
函数的形参,可以有默认的值
函数不传实参,那么就使用默认值
函数传了实参,实参会覆盖默认值
特点
1.必须从后往前写默认参数
2.当函数有默认参数时,声明和定义需要写到一起。
3.引用类型不能有默认的值,可以有默认的变量
$$$函数重载overload
概念
函数名相同,但是功能/内容不同
特点
1.函数名
2.参数必须不一样(类型,数量)
3.处在同一个名字空间下面
思考
1.函数重载和默认参数
2.形参是引用类型,可不可以区分?
3.计算机在什么时候,知道该调用哪个函数的。在什么时候确定?
编译时确定。
3.内存模型和名字空间
作用域
概念
描述了一个名字在文件(编译单元)的多大范围内可见。
局部域
模块
函数
类域
不同的类,是单独的作用域
名字空间域
不同的名字空间,是单独的作用域
链接性
概念
描述了名称如何在各个单元中的共享
空链接
只在模块内可用
内部链接
本文件中使用
外部链接
可以在其他文件中使用
语言链接性
C++的程序,可以使用C的函数
存储性
自动:auto
静态:static
动态:malloc,new
new和delete
为什么不直接用malloc和free?
如果用malloc开辟对象空间,不会调用构造函数
new
用法
1.开辟一个元素的空间
int *p = new int;2.开辟一个数组的空间
int *arr = new int[5];3.开辟一个对象的空间
类 *p = new 类名;
初始化
int *p = new int(99);int *arr = new int[5]{1,2,3};Studen *zs = new Student(90, 'f', 18);
delete
1.回收单个元素
delete p;2.回收数组空间
delete []arr;计算机会记录每个内存块的大小和状态信息
名字空间
概念
一种作用域
作用
解决代码里面,标识符重名的问题
定义
namespace 标识符(名字)
{任何内容变量函数对象
}
使用
1.单独使用
名字空间::内容
::,表示作用域限定符作用域::内容2.整个程序使用
using namespace 名字;
直接使用内容
相关文章:
C与C++的区别,类型转换,引用
1.从C到C 语言的区别 C语言 编译性语言 面向过程语言灵活 移植性好 效率高shell 解释性语言 面向过程语言Linux运维C 编译性语言 面向对象面向对象语言效率最高的 应用领域:系统开发(APP开发,服务器开发),引擎开发,游戏开发&…...
YOLO自定义数据集实现K折交叉验证——K-Fold Cross Validation
实现K折交叉验证(K-Fold Cross Validation)对于YOLO(You Only Look Once)自定义数据集的目标检测任务可以显著提升模型的可靠性和泛化能力。 1. 数据集准备 首先,你需要确保你的数据集符合YOLO的格式,具体…...
刚体的力+射线相关知识点+延迟函数
AddForceAtPosition cube0.AddForceAtPosition(Vector3.forward*5,target.transform.position); force:给cube0一个力,控制cube0的移动; position:cube0和所给点的连线力得大小,这个力跟移动方向有夹角,会造成cube0…...
集合家族详情
一、Java集合框架全景图 1.1 核心接口层次结构 graph TDA[Iterable] --> B[Collection]B --> C1[List]B --> C2[Set]B --> C3[Queue]C1 --> D1[ArrayList]C1 --> D2[LinkedList]C2 --> E1[HashSet]C2 --> E2[TreeSet]C3 --> F1[PriorityQueue]G[M…...
go语言简单快速的按顺序遍历kv结构(map)
文章目录 需求描述用map实现按照map的key排序用二维切片实现用结构体实现 需求描述 在go语言中,如果需要对map遍历,每次输出的顺序是不固定的,可以考虑存储为二维切片或结构体。 假设现在需要在页面的下拉菜单中展示一些基础的选项ÿ…...
【竞技宝】LOL-LPL:EDG3-0零封LNG
北京时间2月12日,英雄联盟LPL2025正在如火如荼的进行之中,昨日迎来LNG对阵EDG,以下是本场比赛的详细战报。 第一局: EDG:杰斯、赵信、维克托、女枪、芮尔 LNG:猴子、猪妹、飞机、韦鲁斯、布隆 首局比赛,EDG在蓝色方,LNG在红色方。阵容方面,EDG点出了杰斯、赵信、维克托、女枪…...
在fedora41中安装钉钉dingtalk_7.6.25.4122001_amd64
在Fedora-Workstation-Live-x86_64-41-1.4中安装钉钉dingtalk_7.6.25.4122001_amd64.deb 到官网下载钉钉Linux客户端com.alibabainc.dingtalk_7.6.25.4122001_amd64.deb https://page.dingtalk.com/wow/z/dingtalk/simple/ddhomedownload#/ 一、直接使用dpkg命令安装deb包报错…...
看期货用的指标,可以提示买卖点和K线转折变颜色的主图指标源码下载
A:MA(CLOSE,17)ABS(MA(CLOSE,17)-REF(MA(CLOSE,17),1)); B:MA(CLOSE,17)MA(CLOSE,17)-REF(MA(CLOSE,17),1); 分界线:IF(MA(CLOSE,17)<B,B,MA(CLOSE,17)),COLORFF00FF,LINETHICK2; 操作线:分界线-(EMA(C,3)-分界线),COLOR00FFFF,LINETHICK2; GUP:MA(C,5),COLORWHITE,LINE…...
【PS 2022】Adobe Genuine Service Alert 弹出
电脑总是弹出Adobe Genuine Service Alert弹窗 1. 不关掉弹窗并打开任务管理器,找到Adobe Genuine Service Alert,并右键进入文件所在位置 2 在任务管理器中结束进程并将文件夹中的 .exe 文件都使用空文档替换掉 3. 打开PS不弹出弹窗,解决&a…...
计算机网络知识速记:HTTP1.0和HTTP1.1
计算机网络知识速记:HTTP1.0和HTTP1.1 1. 基本概念 1.1 HTTP1.0 HTTP1.0是1996年发布的第一个正式版本,主要用于客户端与服务器之间的简单请求和响应交互。它的设计理念相对简单,适合处理一些基本的网页服务。 1.2 HTTP1.1 HTTP1.1是HTT…...
30天开发操作系统 第 20 天 -- API
前言 大家早上好,今天我们继续努力哦。 昨天我们已经实现了应用程序的运行, 今天我们来实现由应用程序对操作系统功能的调用(即API, 也叫系统调用)。 为什么这样的功能称为“系统调用”(system call)呢?因为它是由应用程序来调用(操作)系统中的功能来完…...
蓝桥杯(B组)-每日一题(求最大公约数最小公倍数)
题目: 代码展现: #include<iostream> using namespace std; int main() {int m,n,x,y;cin>>m>>n;//输入两个整数int b;bm%n;//取余数xm;//赋值yn;while(b)//当余数不为0的时候{xy;//辗转相除求最小公约数yb;bx%y;}cout<<y<&…...
【DuodooBMS】开源软件:利他也能赚钱,开源MES就是好例子
引一:“开源与商业化”并不矛盾,关键在于为用户提供真正价值! 引二:“永远年轻,永远热泪盈眶。” 当你试图放弃一个你知道是正确的事情的时候,希望你能再看看这句话。 在数字时代,开源软件就像…...
LeetCode3. 无重复字符的最长字串(滑动窗口)
题目概述 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长…...
Redis 内存回收机制
Redis 是一个基于内存的键值存储系统,为了避免内存耗尽,Redis 提供了多种内存回收机制。以下是 Redis 内存回收的主要方式: 1. 过期键删除 Redis 支持为键设置过期时间,过期后会自动删除键以释放内存。 1.1 设置过期时间 SET key…...
arduino扩展:Arduino Mega 控制 32 个舵机(参考表情机器人)
参考:表情机器人中使用22个舵机的案例 引言 在电子制作与自动化控制领域,Arduino 凭借其易用性和强大的扩展性备受青睐。Arduino Mega 作为其中功能较为强大的一款开发板,具备丰富的引脚资源,能够实现复杂的控制任务。舵机作为常…...
DeepSeek提问技巧总结
DeepSeek提问技巧总结 1.聚焦核心,细化问题: 提问时应精准明确,避免过于宽泛或模糊。例如不要问“如何学习机器学习?”而应问“零基础如何机器学习”。对于复杂问题,可将其拆解为多个小问题,逐一提问。比…...
基于51单片机的门禁刷卡器proteus仿真
地址:https://pan.baidu.com/s/1j0KAmH5pVGWZWRpT6p5hBg 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectron…...
mapbox进阶,添加绘图扩展插件,裁剪线
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…...
19.4.6 读写数据库中的二进制数据
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 需要北风数据库的请留言自己的信箱。 北风数据库中,类别表的图片字段在【数据表视图】中显示为Bitmap Image࿱…...
PlantUml常用语法
PlantUml常用语法,将从类图、流程图和序列图这三种最常用的图表类型开始。 类图 基础语法 在 PlantUML 中创建类图时,你可以定义类(Class)、接口(Interface)以及它们之间的关系,如继承&#…...
MapReduce到底是个啥?
在聊 MapReduce 之前不妨先看个例子:假设某短视频平台日活用户大约在7000万左右,若平均每一个用户产生3条行为日志:点赞、转发、收藏;这样就是两亿条行为日志,再假设每条日志大小为100个字节,那么一天就会产…...
Winform自定义控件与案例 - 构建炫酷的自定义环形进度条控件
文章目录 1、控件效果2、案例实现1、代码实现2、代码解释3、使用示例 4、总结 1、控件效果 2、案例实现 1、代码实现 代码如下(示例): using System; using System.ComponentModel; using System.Drawing; using System.Drawing.Drawing2D; …...
【SpringBoot苍穹外卖】debugDay03.5
1、AOP面向切面编程 1. Target(ElementType.METHOD) 作用:指定自定义注解可以应用的目标范围。 参数:ElementType 是一个枚举类,定义了注解可以应用的目标类型。 ElementType.METHOD 表示该注解只能用于方法上。 其他常见的 ElementType 值…...
分享在职同时准备系统分析师和教资考试的时间安排
(在职、时间有限、同时备考系统分析师考试和小学信息技术教资面试),以下是详细的备考计划,确保计划的可行性和通过性。 一、总体安排 时间分配: 每周周末(2天)用于系统分析师考试备考。工作日晚…...
flink实时集成利器 - apache seatunnel - 核心架构详解
SeaTunnel(原名 Waterdrop)是一个分布式、高性能、易扩展的数据集成平台,专注于大数据领域的数据同步、数据迁移和数据转换。它支持多种数据源和数据目标,并可以与 Apache Flink、Spark 等计算引擎集成。以下是 SeaTunnel 的核心架…...
视频理解新篇章:Mamba模型的探索与应用
人工智能咨询培训老师叶梓 转载标明出处 想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具(限时免费)。 1小时实战课程,您将学习到如何轻松上手并有效利用 Llama Facto…...
分形几何表明数学一直存在有首、末的无穷序列
分形几何表明数学一直存在有首、末的无穷序列。一有穷长直线段S可变为锯齿状图形G而由无穷多无穷短直线段连接而成。G和S一样有左、右两个端点。...
DeepSeek 的 API 服务引入 WPS Office
以下是将 DeepSeek 的 API 服务引入 WPS Office 的通用集成教程。以调用 DeepSeek 的 AI 功能(如文本生成、数据分析)为例,假设你需要通过 WPS 的宏或插件调用外部 API: 准备工作 注册 DeepSeek 账号并获取 API Key 访问 DeepSe…...
Python接口自动化测试—接口数据依赖
一般在做自动化测试时,经常会对一整套业务流程进行一组接口上的测试,这时候接口之间经常会有数据依赖,那又该如何继续呢? 那么有如下思路: 抽取之前接口的返回值存储到全局变量字典中。初始化接口请求时,…...
