C++基础阶段入门 (1)

news2024/11/25 19:33:22

1.C++统一初始化:

    初始化列表解决方案:

//C语言的初始化方案
int main()
{
	int a = 10;
	int* ip = nullptr;
	int ar[] = { 12,23,34,45,56,67 };
}

C++ 初始化:使用{ }

int main()

{
	//char ch = 'a';
	char ch{ 'a' };

	//int a = 10;
	int a{ 10 };
	int b = int(10);
	int x{ 10 };
	int y = int{ 10 };

	//double* ip = nullptr;
	double* ip{ nullptr };

	int ar[] = { 1,2,3,4,5,6 };
	int br[]{ 1,2,3,4,5,6 };
	return 0;
}

2.输入输出

 C++的输入输出

#include<iostream>
using namespace std;

int main()
{
	int a{};
	char ch{};
	//scanf_s("%d", &a);
	//scanf_s("%c", &ch);

	cin >> a >> ch;  //cin输入流对象

	//printf("a=%d ch=%c \n", a, ch);
	cout << a << "\t" << ch << endl;   //endl=> \n;
	cout << a << " " << ch << endl;   // \n;


	return 0;
}
int main()
{
	int a{ 10 }, b{ 20 };
	printf("a=%d b=%d\b", a, b);
	cout << "a=" << a << "b=" << b << endl;
	return 0;
}

: 

       使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含<iostream >头文件以及std标准命名空间endl相当于'/n';

字符串的输入:

int main()
{
	char str[128]{};
	//cin >> str;

	cin.getline(str, 128);      //127 \0
	cin.getline(str, 128, '#');     

	cout << str << endl;
	return 0;
}

3.const 与指针

const 在C与C++的区别:

int main()
{
	const int n = 10;
	int ar[n] = { 1,2,3,4 };
	int* p = (int*)&n;
	*p = 100;
	printf("n=%d *p=%d\n", n, *p);
	return 0;
}

C++以常量为主  C语言以变量为主 

 

const与指针的关系:

int main()
{
	int a{ 10 }, b{ 20 };      //指针自身的值 指针所指之物的值
	int* ip1 = &a;             // *ip1 = 100;ip1=&b;

	const int* ip2 = &a;        //const修饰自身指向能力时, 指向不可修改 自身可以修改
	int const* ip3 = &a;        //ip2=&b

	int* const ip4 = &a;         //const修饰ip自身 *ip4=100;
    const int* const ip5 = &a;   //都不能修改

	return 0;
}

 A:const修饰自身指向能力时, 指向不可修改 自身可以修改, 指向为常性 在赋值的时候

//1  不能给普通指针,无法编译通过  能力扩展了 

//3  const修饰指针自身 没有修饰指向

 B:  const修饰p自身   

 

4.引用(别名)

引用的定义
类型& 引用变量名称 = 变量名称
这就是引用变量的定义。&和类型结合称之为引用符号,不是取地址的符,代表别名的意思。

1 引用没有定义,是一种关系型声明。声明它和原有某一变量(实体)的关 系。故 而类型与原类型保持一致,且不分配内存。与被引用的变量有相同的地
址。
2 声明的时候必须初始化,一经声明,不可变更。
3 可对引用,再次引用。多次引用的结果,是某一变量具有多个别名。
4 &符号前有数据类型时,是引用。其它皆为取地址
int main()
{
	int a = 10;
	int b = a;
	int& c = a;
	
	return 0;
}

 

 引用的特点:

int main()
{
	int a{ 10 };
	int& b=a;   //int *ip{nullptr}
}

 const引用:

//引用
int main()
{
	int a{ 10 };
	const int b{ 20 };   //常变量

	int& x = a;     //普通引用引用普通变量
	int &x = b;   //error  不能拿普通引用引用常变量

	//常性引用是万能引用
	const int& x = b;    //ok  常引用可以引用常变量
	const int& y = a;    //ok  常引用可以引用普通变量  y只能读取a的值   不能通过y去修改a的值
	const int& z = 10;   //ok  常引用可以引用字面常量  

	return 0;
}

引用作为形参代替指针:

void Swap(int *ap, int *bp)  //形参是指针
{
	assert(ap != nullptr && bp != nullptr);
	int tmp = *ap;
	*ap = *bp;
	*bp = tmp;

}
int main()
{
	int x = 10, y = 20;
	Swap(&x,&y);
	cout << "x=" << x << "y=" << y << endl;
	return 0;
}

使用引用交换两个整型值

 其他引用:

 

 1)引用作为其它变量的别名而存在,因此在一些场合可以代替指针

 2)引用相对于指针来说具有更好的可读性和实用性

5.缺省参数 

        一般情况下,函数调用时的实参个数应与形参相同,但为了更方便地使用函数,C++也允许定义具有缺省参数的函数,这种函数调用时,实参个数可以与形参不相同。

        缺省参数指在定义函数时为形参指定缺省值(默认值)。

        这样的函数在调用时,对于缺省参数,可以给出实参值,也可以不给出参数值。如果给出实参,将实参传递给形参进行调用,如果不给出实参,则按缺省值进行调用。

        缺省参数的函数调用:缺省实参并不一定是常量表达式,可以是任意表达式,甚至可以通过函数调用给出。如果缺省实参是任意表达式,则函数每次被调用时该表达式被重新求值。但表达式必须有意义; 

int my_rand()
{
	srand(time(nullptr));
	int ra = rand() % 100;
	return ra;
}

void func(int a, int b = my_rand())
{
	cout << "a= " << a << endl;
	cout << "b= " << b << endl;
}
int main()
{
	func(1);
	return 0;
}

 当缺省实参是一个表达式时在函数被调用时该表达式被求值。

 6.函数重载

 C语言实现int,double,char 类型的比较大小函数:

       函数重载(Function Overload):用同一个函数名定义不同的函数,当函数名和不同的参数搭配时函数的含义不同。

       在C++中可以为两个或两个以上的函数提供相同的函数名称,只要参数类型不同,或参数类型相同而参数的个数不同, 称为函数重载。

 


void func(int a,char ch){}
void func(char ch,int a){}

int main()
{
	func(12, 'a');
	func('a', 12);

	return 0;
}

 

 1.如果两个函数的参数表相同,但是返回类型不同,会被标记为编译错误: 函数的重复声明

 ⒉参数表的比较过程与形参名无关。 

 3.如果在两个函数的参数表中,只有缺省实参不同,则第二个声明被视为第一个的重复声明。 

 4.注意函数调用的二义性;

 如果在两个函数的参数表中,形参类型相同,而形参个数不同,形参默认值将会影响函数的重载.

 5.当一个形参类型有const或volatile修饰时,如果形参是按值传递方式定义,在识别函数声明是否相同时,并不考虑const和volatile修饰符. 

 6.当一个形参类型有const或volatile修饰时,如果形参定义指针或引用时,在识别函数声明是否相同时,就要考虑const和volatile修饰符. 

总结:
函数重载的依据
返回类型不同的函数是否可以重载。
参数带有默认值的情况
为什么C++可以函数重载而C语言不可
名字粉碎。
extern 关键字的使用

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

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

相关文章

企业软文怎么写吸引人?教你几招

企业每年都要投放大量的商业软文到热门的内容平台上&#xff0c;也许现在你阅读的某篇文章&#xff0c;就是一篇企业软文。 真正厉害的软文在于你根本看不出来这是一条广告&#xff0c;从而让你心甘情愿的为某个产品掏腰包。企业软文到底怎么写才吸引人&#xff0c;接下来伯乐…

sfavsrv导致主机负载高

下午接客户电话&#xff0c;监控告警了&#xff0c;主机负载高&#xff0c;登录后top查看&#xff0c;确实比较的高 再次查看负载高的cpu发现是sfavsrv 吓了一跳&#xff0c;还以为中毒了&#xff0c;发给客户检查是否自行部署了第3方软件&#xff0c;确实第3方的&#xff0c;关…

如何将pdf图片文字转换成word 文字word图片怎么转换pdf

如今大家在工作中常常会运用到电脑来办公&#xff0c;电脑的运用大大提高了我们的工作效率&#xff0c;在带来机会的同时同样也带来了新挑战。 pdf图片怎么转换成word文档&#xff1f;PDF格式是一种常用的文档格式&#xff0c;它可以保持文档内容和格式的完整性&#xff0c;但是…

4月有8本SCIE期刊被剔除(附MDPI/Frontiers/Hindawi最新在检期刊)

2023年4月SCI、SSCI期刊目录更新 2023年4月18日&#xff0c;科睿唯安更新了WOS期刊目录&#xff0c;继上次3月WOS期刊目录剔除50本SCIE&SSCI期刊之后&#xff0c;此次4月更新又有8本SCIE期刊发生变动&#xff0c;其中有4本期刊被踢出SCIE数据库&#xff0c;4本期刊更改了名…

QMS-云质说质量 - 2 你真的知道什么是质量吗

云质QMS原创 转载请注明来源 作者&#xff1a;王洪石 引言 暴露的只是冰山一角 注&#xff1a;&#xff08;&#xff09;中为ISO9000:2015 质量管理体系基础和术语的编号 一个组织的质量管理(3.3.4)&#xff0c;可包括制定质量方针(3.5.9)和质量目标(3.7.2)&#xff0c;以及通…

Web 攻防之业务安全:接口未授权访问/调用测试(敏感信息泄露)

Web 攻防之业务安全&#xff1a;接口未授权访问/调用测试 业务安全是指保护业务系统免受安全威胁的措施或手段。广义的业务安全应包括业务运行的软硬件平台&#xff08;操作系统、数据库&#xff0c;中间件等&#xff09;、业务系统自身&#xff08;软件或设备&#xff09;、业…

火车站闸机web3d数字展示平台全方位动态呈现设备细节

智能互联网时代&#xff0c;传统的图片、文字、视频等产品展示方式&#xff0c;因为缺少互动性&#xff0c;很难引起用户的兴趣&#xff0c;已经逐渐失去了宣传优势。 Web3D交互展示技术的出现&#xff0c;让众多品牌和企业找到了新的方向&#xff0c;线上产品展示不在枯燥无趣…

少儿编程 中国电子学会图形化编程等级考试Scratch编程一级真题解析(选择题)2023年3月

2023年3月scratch编程等级考试一级真题 选择题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 1、下列说法不正确的是 A、可以从声音库中随机导入声音 B、可以录制自己的声音上传 C、可以修改声音的大小 D、不能修改声音的速度 答案&#xff1a;D…

计算机网络第1章(概述)

文章目录 1.1、计算机网络在信息时代的作用1.2、因特网概述1、网络、互连网&#xff08;互联网&#xff09;和因特网2、因特网发展的三个阶段3、因特网的标准化工作4、因特网的组成 1.3 三种交换方式1、电路交换&#xff08;Circuit Switching&#xff09;2、分组交换&#xff…

Composer使用教程

Composer使用教程 前言1.Composer 简介2. 下载与安装2.1 局部安装2.2 全局安装2.3 更新composer2.4查看composer2.5 安装composer镜像加速 3. composer的使用3.1初始化3.2安装第三方包 4. 自动加载器4.1 加载非 class 文件4.2 加载自己写 class 文件4.3 PSR-4 自动加载规范 5. …

【脱产二站上岸】上海交大819复习经验总结

笔者来自通信考研小马哥23上交819全程班学员 本科西南某985&#xff0c;成绩排名中下&#xff08;面试被老师疯狂吐槽&#xff09;&#xff0c;一战本校&#xff0c;初试分数差10来分被刷。21年12月考完数学和专业课出来就知道考不上了&#xff0c;分数一出就下决心二战&#…

软件测试,想找一份20k以上的工作需要掌握哪些知识?

都知道IT行业是高薪人员的聚集地&#xff0c;但想要成为高薪程序员却并不容易。月薪20k是测试工程师的一个门槛&#xff0c;想要突破就必须掌握更多的技能。 因为程序员职业发展很快&#xff0c;即使是相同起点的人&#xff0c;经过几年的工作或学习&#xff0c;会迅速拉开极…

Python列表和字典前面为什么要加星号(**)?

人生苦短&#xff0c;我用python 今天来和大家一起学习一下为什么Python列表和字典前面会加星号&#xff08;&#xff09;&#xff1f;** python 安装包资料:点击此处跳转文末名片获取 Python 中&#xff0c; 单星号*和双星号**除了作为“乘”和“幂”的数值运算符外&#xff…

【python的pdb调试简单了解一下?】

调试是程序开发过程中的重要环节&#xff0c;它可以帮助开发人员识别和解决程序中的错误和问题。Python 提供了一个内置的调试器 pdb&#xff08;Python Debugger&#xff09;&#xff0c;可以帮助开发人员逐行分析代码、查看变量值、跟踪函数调用等。 入门 要使用 pdb 调试器…

Numpy从入门到精通——存读矩阵以及读取矩阵中的数据

这个专栏名为《Numpy从入门到精通》&#xff0c;顾名思义&#xff0c;是记录自己学习numpy的学习过程&#xff0c;也方便自己之后复盘&#xff01;为深度学习的进一步学习奠定基础&#xff01;希望能给大家带来帮助&#xff0c;爱睡觉的咋祝您生活愉快&#xff01; 这一篇介绍《…

c#期末复习题重点难点题

2. (单选题, 9分)在.NET中&#xff0c;.NET Framework由&#xff08; &#xff09;组成。 A. FCL和CLR -开发库和运行环境B. ADO.NETASP.NET -数据操作和web框架C. CLS和CTS -语法规范和类型规范 即所有语言和语法规范 和 各语言间的类型互操作性规范D. Winform和ASP.NET…

2023前端面试上岸手册——JavaScript部分

目录 JavaScript 有哪些数据类型&#xff0c;它们的区别&#xff1f;数据类型检测的方式有哪些null 和undefined 区别如何获取安全的 undefined 值&#xff1f;Object.is() 与比较操作符 “两等” 、“三等” 的区别&#xff1f;什么是 JavaScript 中的包装类型&#xff1f;为什…

盘点:这些好用的ERP软件你知道哪些?

在选择ERP系统时&#xff0c;我们可以按照这三个维度&#xff0c;然后再按照需求去选择ERP系统。 市面上ERP软件大概可以分为三大类&#xff1a; ① 标准ERP应用&#xff1a;功能比较固定&#xff0c;难以满足个性化需求&#xff0c;二次开发难度很高&#xff1b; ② 找外包/…

校企合作 | 璞华×中南财经政法大学,共建教学实习(就业实践)基地

4月17日&#xff0c;璞华集团与中南财经政法大学举行校外教学实习基地签约及挂牌仪式&#xff0c;揭开校企产学研合作序幕。 中南财经政法大学统计与数学学院院长张虎先生、统计与数学学院党委书记&副院长梁娜女士、统计与数学学院院党委副书记&纪委书记王瑄女士、外国…

酒店行业,BI分析关注哪些指标

酒店作为企业商旅系统中相关酒店业务实现的基础核心部分&#xff0c;会接入大量不同类型的供应商&#xff0c;从这些供应商拉取大量的酒店数据&#xff0c;并对这些数据进行整合。 信息化建设确实帮助酒店行业提高了管理水平&#xff0c;更好地实现资源共享。但同时管理需求日…