c++基础知识合集

运行库全包揽!微软Visual C++合集,让软件运行如丝般顺滑 在数字世界的浩瀚海洋中,软件如同我们探索未知的航船,而运行库则是这些航船不可或缺的“燃料”。你是否曾遇到过软件报错、无法启动的尴尬情况?那很可能就是缺少了关键的运行库支持。今天,就让我们一起揭开微软Visual C++运行库合集的神秘面纱,让你的软件运行从此畅通无阻! 阅读详情

系列文章目录

c++基础知识1


1 c++基础知识合集

1.1命名空间:关键字 namespace N

记忆:c++库中所有东西都在std命名空间中
使用前 ‘using namespace std;’
作用:不同命名空间中可以出现重复的命名

namespace N1
{
	int a;
	int add(int left ,int right)
	{
		retrun left+right;
	}
}

namespace N2
{
	int a;
	int add(int left ,int right)
	{
		retrun left+right;
	}
}

1.1 命名空间成员的使用:
1.作用域限定符: N1(空间名称)::a(变量名称或函数名称)

int main()
{
	printf("%d",N::a);
	printf("%d",N::add(1,2));
	return 0;
}

2.使用using展开空间中某个变量或函数 using N1::a

{
using N1::a
int main()
{
	printf("%d",a);
	return 0;
}
}

3.使用using展开全部空间 using namespece N1;

using namespce N;
int main
{
	printf("%d",a);
	printf("%d",b);
	Add(10,20);
	return 0;
}

1.2 C++输入和输出

int main()
{
	char c;
	cin>>c;//输入
	cout<<"hello world"<<endl;//输出,其中endl表示换行
	return 0;
}

1.3 缺省函数,缺省部分必须放在最后面

1.4函数重载

重载底层:c++编译为函数名+参数类型 c编译为函数名

int Add(int a,int b) //c++ ,编译为 _Z3Addii    c编译为Add
{
	return a+b;
}
double Add(int a,doule b)//c++,编译为 _Z3Addid    c编译为Add
{
	retrun a+b;
}

调用时: Add(1,(double)2);
c++      call的是    _Z3Addid
c        call的是     Add

1.4 extern “C”

以c的风格来编译,以c的方式来call(调用),c++兼容c的编译和调用。

extern "C" int Add(int left,int right)
int main()
{
	Add(1,2)
	return 0
}

在这里插入图片描述

1.5 引用 (底层:编译时也是编译成指针)

1.不开辟空间,和引用的变量共用一块空间,也叫取别名
所以:引用传参和返回引用时,返回的同一块空间。一个改变,另一个也更改。

而通过传值来传参和返回时,会开辟一个临时tmp,传递和返回的是这块临时空间。

2.定义是必须赋初始值。 //也就是定义必须初始化
int& a;(会报错)
int& a=b;和const int a=b;const变量也是一定义就要赋初始值

3.const int& d=i; 引用的权限可以缩小或者不变,但是不可以放大
//通过const引用的权限不可放大 //const的引用无法被赋值为非const的引用

4.关于引用创建临时变量的问题
产生临时变量的引用,需要加const

int i = 0;
double d = 0.0;
const double& ri = i;   
//相当于会创建一个doule的tmp,double tmp=(double)i
//然后 double&ri=tmp;  注意临时变量具有常性(const),防止被修改,导致数据异常
//const的引用无法被赋值为非const的引用
int& rd=d;

5.引用和指针区别
sizeof(引用) 结果:引用类型的大小
sizeof(指针)结果:指针变量所占字节数:4或者8

1.5 内联函数 inline

1.类似于c中的宏定义,宏替换,但其无法调试。

2.编译时c++会在调用内联函数的地方展开,没有函数压栈的开销,提升效率。
内联函数 在debug模式下,不会展开,方便调试。

3.lnline对编译器是一种建议,不一定会展开

4.递归和代码很长的不适合采用内联函数。会在每个调用的地方展开,浪费空间太多。

5.lnline声明和定义不可分离,分离会导致连接错误。因为lnline被展开后,不会压栈,也就没有地址,无法通过call方式来连接,只能通过在编译时通过宏替换来展开,分离会导致无法展开。

1.6 auto关键字

可以根据数据自动推到其数据类型
1.auto不可作为参数传递和不可用于数组

int a;
auto &d = a;   d的类型是int
auto *f = &a;   f的类型是int*
auto f1 = &a;  f的类型还是int* 

常用于

std::map<std::string,std::string> dict;
std::map<std::string,std::string>::iterator it1 = dict.begin();
auot it2 = dict.begin();

1.7 范围for 基于c++的迭代器iterator来实现的


//&数组名  sizeof(数组名)  范围for(auto& e:数组名)  其余传递的都是指针

for(auto& e:array) //注意此时传递的是整个数组  
{
	e* = 2;
	cout<<e<<" ";
}
cout<<endl;
void TestFor(int array[])
{
	for(auto& e:array)//会报错,因为array做参数传递时,传递的是指针
	cout<<e<<endl;
}

1.8 C++的nullptr和NULL的区别

#define NULL 0
#define nullptr ((void*)0)   
void fun(int n)
{
	cout<<"整形"<<endl;
}
void fun(int *p)    
{
	cout<<"整形指针"<<endl;
}
int mian()
{
	fun(0);  
	fun(NULL);  //被处理为fun(0)    call   _Z3funi
	fun(nullptr) //被处理为fun((void*)0)  call  _Z3funip
	return 0;
}

C++编程深度学习资料合集系列一 模板是C++语言中支持泛型编程的核心特性之一,它允许用户编写与数据类型无关的代码。通过模板,我们可以创建一个通用的类或函数,它在编译时会被实例化为特定类型的代码。使用模板可以实现代码的重用,并且可以在不牺牲类型安全性的前提下,为不同的数据类型提供相同的操作和行为。模板的定义使用关键字template后跟一个或多个模板参数的声明。函数模板的一般形式如下:在这段代码中,T是一个模板参数,它在函数调用时会被实际的数据类型所替换。函数add。 阅读详情

相关推荐

QT - QT开发进阶合集

本文介绍了QT框架的基础知识和核心功能,主要面向已有C++基础的学习者。内容涵盖信号与槽机制(包括参数详解和连接类型)、7类实用控件(ComboBox、LineEdit、TextEdit等)、高级控件TreeView与TreeWidget的实现与区别、布局管理(DockWidget、StackedWidget、Splitter)以及消息框使用。通过具体代码示例(基于QT 6.9.1)演示了模型-视图架构、数据驱动实现方式等核心概念,并比较了View类与Widget类的特性差异。文章强调"一通百通&

阿博的博客 1164

C++ 1-5级基础知识合集 开篇

目录,开篇

2401_83336025的博客 610

基于PWM的汽车仪表步进电机微步驱动优化实践

本文深入探讨了基于PWM的微步驱动技术,用于优化汽车仪表步进电机的运行性能。通过将传统的分步驱动升级为PWM微步细分驱动,利用正弦/余弦查表法合成旋转磁场,有效消除了指针抖动与噪声,实现了指针的平滑、精准运动。文章以STM32和VID2905电机为例,提供了详细的硬件连接、代码实现及高级优化技巧,为提升汽车仪表体验提供了实用方案。

weixin_29169505的博客 512

C++基础知识合集

复合类型 复合类型是指基于其他类型定义的变量,通常有引用和指针; 引用: 简单的理解就是为一个对象起别名,就相当于小时候经常给同学起外号一样,是为一个已经存在的人起外号,那么也就是说引用变量必须初始化,且初始化为已经存在的对象。引用的使用方法是 : & + 引用名 = 被引用的对象 比如: int a = 2; int &b = a; //合法 int &c = 2; //非法,2是右值,引用这里指的是左值对象,右值引用前面说过,是 &&d = 2; int

Lc_summer的博客 782

做形态学方法的团队_“设计形态学”与“第三自然”

文/邱松(清华大学 美术学院)摘要:“设计形态学”是基于“形态学”研究的设计基础学科。“形态”既是该学科研究的主体,又是与其它学科相连接的“纽带”。实际上,不管是供养我们的地球家园,还是神秘莫测的浩瀚宇宙,均由数量纷繁、千姿百态的“形态”构筑而成。形态通常被分成两大类:一类是源于“第一自然”的“自然形态”;另一类是来自“第二自然”的“人造形态”。而这两类形态正是“设计形态学”研究的两条...

weixin_31548723的博客 2683

BERTopic安装指南:hdbscan依赖问题全解析(附解决方案)

本文详细解析了安装BERTopic时常见的hdbscan依赖报错问题,深入剖析了C++编译环境缺失、Python版本兼容性以及包管理渠道混用三大核心原因。针对Windows、macOS和Linux不同系统,提供了创建虚拟环境、使用conda安装预编译包、安装C++编译工具等具体解决方案,帮助用户顺利安装BERTopic并开始文本主题建模实践。

weixin_29061041的博客 214

【转载合集】Ubuntu系统---进行C++项目开发的基础知识汇总

在这里把学习到的linux C++开发文章统一汇总存档

gaoyao_xian的博客 430

DMR对讲机的基本概念理解

刚刚入手DMR对讲机,尚未成功联通。国内互联网上能找到的资料很少,大多数也都是一些DMR协议介绍之类的玩意,对实际操作没有指导意义。以下全部是这几天在网上研究各种资料得出的个人思考,如有错误请斧正。 相比与模拟通讯系统,DMR将语音信号转换为包的形式进行收发。将DMR对比成TCP/IP系统会更容易理解。 一般DMR对讲机都支持模数双通,说明DMR应该使用了跟FM同样的无线AP组件,只在解码上有区别。对讲机先使用DMR进行数字解码,解码成功则说明是数字信号,不成功则使用模拟方式再次进行解码。可以对等理解为

1万+

Go-Python-Java-C-LeetCode高分解法-第七周合集

本题解Go语言部分基于其他部分基于本人实践学习本文部分内容来自网上搜集与个人实践。如果任何信息存在错误,欢迎读者批评指正。本文仅用于学习交流,不用作任何商业用途。欢迎订阅专栏,每日一题,和博主一起进步。

记录我的学习历程 520

基于泰勒展开改进的物理信息神经网络

基于泰勒展开改进的物理信息神经网络

天天酷科研的博客 504

【原理图PCB专题】案例:双排0.5mm间距座子转单排0.5mm间距座子Layout方案分析

本文提供一种分析思路,并通过实际案例来进行Layout方案分析的讲解。

一点硬件 456

Go-Python-Java-C-LeetCode高分解法-第二周合集

本题解Go语言部分基于其他部分基于本人实践学习本文部分内容来自网上搜集与个人实践。如果任何信息存在错误,欢迎读者批评指正。本文仅用于学习交流,不用作任何商业用途。

记录我的学习历程 1789

MATLAB和S7-1200PLC水箱液位高度PID控制联合仿真(KEPserverOPC通信应用)

SMART PLC 向导PID的详细介绍请查看下面文章链接:S7-200 SMART PLC PID向导详细介绍(如何实现P、PD、PID控制器)-优快云博客文章浏览阅读1k次。这篇博客主要介绍SMART PLC PID向导的使用,PID控制相关的其它内容请查看专栏系列文章,常用链接如下:SMART PLC PID负压控制(过程量为负数)_负压控制pid控制程序_RXXW_Dor的博客-优快云博客1、如何实现PID反作用调节?S7-1200PLC和KEPserver OPC通信-优快云博客。

RXXW_Dor的博客 1781

C++项目合集

文章目录一、学习篇:二、实战篇三、大型项目篇: 一、学习篇: CPlusPlusThings 国人开源一个 C++ 学习项目。它系统地将 C++ 学习分为了【基础进阶】、【实战系列】、【C++2.0 新特性】、【设计模式】和【STL 源码剖析】、【并发编程】、【C++ 惯用法】、【学习课程】、【工具】、【拓展】。作为一个全面系统的 C++ 学习项目,CPlusPlusThings 是优秀的,它合理地安排了 10 Days 的实战部分,在实战中了解语法和函数用法,唯一不足的是,在注释部分有些不尽人意,对部分

飞鸡110的博客 9836

Modis数据处理工具:MRT百度网盘下载和手把手图文安装教程

如下图所示为MODIS Reprojection Tool(MRT)的软界面,看似简单,却是Modis遥感影像必不可少的处理工具,如投影变换等。本文以图文并茂的形式,详细讲解MRT软件在Windows10平台上的安装过程,并附MRT软件百度网盘下载地址。 Modis Tool主界面: 一、安装过程 1、安装Java运行环境 双击Java.exe,安装运行环境。默认的安装路径为C:\Program Files (x86)\Java\jre6\bin,后面需要用到这个路径。 等待...

智慧空间实验室 2623

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C++基础知识汇总

【代码】C++基础知识

maobin_1的博客 335

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

该死!GitHub上这些C++项目真香

在知乎上看到了个问题,说,在用github搜学习资料时,总是一些很大型且成熟的项目,根本看不懂。 做为工作近十年的经验老鸟,github上的资源非常丰富,通过github学习一定要循序渐进。 其实,不光有大型项目,还有很多学习型资源。 这里帮大家就C++方向罗列出了一些热度很高的从入门到小实战项目再到大型项目,供大家学习吧。 学习篇: 一、一个项目入门C++足以:CPlusPlusThings CPlusPlusThings 是国人开源一个 C++ 学习项目。它系统地将

启舰 5万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

c++库合集

同时,C++运行库的版本更新和维护也是一个重要的方面,开发者需要注意及时更新和修复运行库中的bug和漏洞,以保证程序的稳定性和安全性。2.1标准模板库(STL)STL是C++运行库中最重要的部分之一,它提供了丰富的模板类和函数,用于处理常见的数据结构和算法。通过深入解析C++运行库的定义、组成部分和优势,读者可以更好地理解C++运行库的重要性,并在实际开发中充分利用其功能和特点。1.C++运行库的定义和作用C++运行库是一组预编译的函数和代码集合,用于支持C++程序的运行和执行。

WSH2012ffff的博客 861

cpp面试题合集

面试题合集 下面两个函数能形成函数重载吗?有问题吗或者什么情况下会出问题? void TestFunc(int a = 10) { cout<<"void TestFunc(int)"<<endl; } void TestFunc(int a) { cout<<"void TestFunc(int)"<<endl; } 我的答案: 不能形参函数重载。函数重载在同一作用域下,函数同名而参数列表不同。而参数列表中形参列表(参数个数 或 类型 或

VegetableGirl的博客 1857

c语言 运行库 下载,Visual C++运行库合集

Visual C++运行库合集是基于Windows操作系统打造的可视化集成开发环境,能够为用户提供C、标准C++、ATL、MFC、OpenMP以及MSDIA等类库的运行支持,助广大用户能够更好在自己的电脑上运行VisualC++ 开发的应用程序。Visual C++运行库具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言,同时还带来了编辑器、调试器以及程序向导AppWizard...

weixin_42398629的博客 3104

Cpp与算法合集

二.变量 三. 条件 & 循环语句 条件涉及关键字:if ,else ,switch,case,break循环涉及关键字:while ,break , continue, for, do while案例1:斐波那契数列算法、 案例2:输出指定形状的图形 案例三:在遇到读入数据个数未知时,可以使用以下方式来输入 四. 数组 程序 = 逻辑 + 数据。cpp中数组是存储数据的强有力手段。 全局变量的初始值默认为0。局部变量的初始值随机。故,当使用局部变量时,需要先对其进行初始化为0。且局部变量会存储在栈空间中

qq_55071342的博客 2106

Llama.Cpp + LangChain:在本地运行大模型(LLM)

llama.cpp 的主要目标是在各种硬件(本地和云端)上以最少的设置和最先进的性能实现 LLM 推理。llama-cpp-python 是 llama.cpp 库的简单 Python 绑定。llama-cpp-python 提供了:通过 ctypes 接口对 C API 进行低级访问。用于文本完成的高级 Python APIOpenAI 兼容的 Web 服务器。

python1222_的博客 1368

【嵙大】CPP实验合集02(经测试全通过)

CPLX::CPLX(double, double)构造:参数为实部、虚部,用传入的参数初始化对象,产生一行以“CREATE()”开始的输出,并输出复数的实部和虚部;CPLX::CPLX()构造:初始化一个实部、虚部均为0的复数,产生一行以“CREATE()”开始的输出,并输出复数的实部和虚部;CPLX::print():产生一行以“PRINT()”开始的输出,并以格式“(a, bi)”的形式输出复数;CPLX::~CPLX()析构:产生一行以“RELEASE()”开始的输出,并输出复数的实部和虚部;

2401_87299053的博客 1006

【免费下载】 Visual C++ Redistributable Packages合集:一站式解决运行库问题

Visual C++ Redistributable Packages合集:一站式解决运行库问题 【下载地址】VisualCRedistributablePackages合集 本仓库提供了一个Visual C++ Redistributable Packages的合集资源文件下载。该合集包含了x86、x64以及它们的SP...

gitblog_09787的博客 3123

【免费下载】 Microsoft Visual C++ 2015-2019 运行库合集

Microsoft Visual C++ 2015-2019 运行库合集 【下载地址】MicrosoftVisualC2015-2019运行库合集分享 本仓库提供了一个资源文件的下载,文件名为 `Microsoft Visual C++ 2015-2019 x86_x64 (2).zip`。该文件包含了 Microsof...

gitblog_09728的博客 1636

C++Builder6资料合集

C++Builder6资料合集 【下载地址】CBuilder6资料合集 探索C++Builder6的编程世界,本资料合集为您提供一站式学习资源。无论您是初学者还是希望提升技能的开发者,这里都有您需要的内容。从基础教程到高级编程技巧,从实例分析到开发工具使用,每一部分都精心准备,助您轻松掌握C++Builder6的核心知识...

gitblog_06797的博客 430
上一篇: 8080时序
下一篇: C++类和对象基础知识
物语系列
博客等级 码龄6年 582粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值