引入
哈喽各位铁汁们好啊,我是博主鸽芷咕《C++干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的城市有没有这种实惠又全面的零食基地呢?C++ 本身作为一门篇底层的一种语言,世面的免费课程大多都没有教明白。所以本篇专栏的内容全是干货让大家从底层了解C++,把更多的知识由抽象到简单通俗易懂。
⛳️ 推荐
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
一、C++的输入输出
每当我们学习一个函数的时候,最首先学习的就是输入和输出那么我们来看看C++是如何来像这个世界打个招呼吧!
1.1 cout 输出函数
在C++ 中的输入函数做了新的升级而且在以往我们 写C语言的时候每个类型的变量都要书写函数类型过于玛法了所以在 C++ 输出是自动识别类型的:
-
cout
中的C
是console
控制台的意思: -
cout
就代表 输出到控制台
🍸 代码演示:
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
int main()
{
int b= 10;
double x = 1.11;
char a = 'h';
cout << b <<"\n";
cout << x << endl;
cout << a << endl;
return 0;
}
这里补充一下,C++在开发出来的时候本贾尼博士觉得写 “\n”
来进行换行台麻烦了所以:
- 在C++ 中换行是
endl
-
endl
代表的英文意思是 -
end
代表结束,l
是line
行的意思,结束这一行就是换行的意思
1.2 <<流插入 & >> 流提取
在C++中 <<是流插入运算符,>>是流提取运算符。同时C++也兼容
- C语言中 << 左移操作符 >> 右移动操作符
🍸 代码演示:
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
int main()
{
int a = 100;
a = a << 1;
cout << a << endl;
return 0;
}
1.3 cin 输入函数
cin 是C++ 中的输入函数,和 cout 一样都是 ostream和istream类型的对象,需要我们搭配流提取操作符一起使用:
🍸 代码演示:
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
int main()
{
int a = 0;
cin >> a;
cout << a << endl;
return 0;
}
二、缺省函数
缺省函数 又叫 默认参数 听名字其实就能大概猜出来是什么意思,其实就是当我们没有给函数参数传递值的时候就使用我们赋予的缺省值/默认值。
2.1 缺省函数的概念
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。
🍸 代码演示:
void Func(int a = 0)
{
cout<<a<<endl;
}
int main()
{
Func(); // 没有传参时,使用参数的默认值
Func(10); // 传参时,使用指定的实参
return 0;
}
2.2 缺省函数的分类
2.2.1 全缺省函数
全缺省函数就是函数的全部形参给了缺省值或者默认值
🍸 代码演示:
void Func(int a = 10, int b = 20, int c = 30)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}
2.2.2 半缺省函数
半缺省函数就是只给部分缺省值, 但是半缺省参数必须从右往左依次来给出,不能间隔着给
- 这是因为隔着给参数的话编译器并不能自动识别到底是使用缺省参数还是不使用
- 如果全给了就完全没有意义隔着给了
📑 错误展示:
void fun(int a = 10, int x , int y = 10)
{
}
int main()
{
fun(1);
return 0;
}
这里的1究竟是想给 x 还是 a 呢?如果写俩个那么隔着写的意义再哪里呢?
🍸 代码演示:
void Func(int a, int b = 10, int c = 20)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}
缺省函数其实在实际范围应用非常的广泛,让函数的用法更加灵活我们可以传一个参数也可以或者传2个参数也可以
- 比如说我们在对栈开辟空间时候就会遇到好几种情况以往我们都是默认先开辟4个而现在
🍸 代码演示:
#include<iostream>
#include"Stack.h"
using namespace std;
int main()
{
struct Stack st1;
// 1、确定要插入100个数据
StackInit(&st1, 100);
// 2、只插入10个数据
struct Stack st2;
StackInit(&st2, 10);
// 3、默认插入
struct Stack st3;
StackInit(&st3);
return 0;
}
2.2.3 缺省函数的注意事项
- 1. 半缺省参数必须从右往左依次来给出,不能间隔着给
- 2. 缺省参数不能在函数声明和定义中同时出现
还有一个很重要的一点是当函数声明和定义分离的时候,应在声明中去声明缺省函数,定义中不能进行同时声明缺省函数
2.2.4 函数声明和定义分离,缺省函数只能在声明定义
为什么函数声明和定义分离,缺省函数只能在声明定义呢?其实第一个原因是因为
- 🌱 缺省函数在声明和定义分离的时候特别容易写错
- 🌱 还有一个很大的原因是因为从编译原理上面来看
源文件在进行编译的时候就会出现,如果我们不在缺省函数只能在 声明定义
缺省函数的话
- 程序在 编译的时候就会被检查语法拦截住了
- 预处理是把
头文件展开
,而头文件里面我们没有声明缺省函数参数
又没有写语法上就直接错误了
📑 错误示范:
三、函数重载
在C++ 里面还对函数做了新的升级,函数重载,即一个函数名可以根据参数类型不同拥有多个功能:
- 这在C语言中是绝对不支持的那么怎么样才算函数重载呢?
3.2 函数重载概念
函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。
在C++中,只要函数名相同,函数参数不同就可以构成重载
- 🌱 函数参数类型不同
#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{
cout << "int Add(int left, int right)" << endl;
return left + right;
}
double Add(double left, double right)
{
cout << "double Add(double left, double right)" << endl;
return left + right;
}
int main()
{
Add(10, 20);
Add(10.1, 20.2);
}
- 🌱 函数个数不同
#include<iostream>
using namespace std;
// 2、参数个数不同
void f()
{
cout << "f()" << endl;
}
void f(int a)
int main()
{
f();
f(10);
}
- 🌱 参数顺序不同(本质上还是参数类型不同)
🍸 代码演示:
#include<iostream>
using namespace std;
// 3、参数类型顺序不同
void f(int a, char b)
{
cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
cout << "f(char b, int a)" << endl;
}
int main()
{
f(10, 'a');
f('a', 10);
return 0;
}
四、推荐图书
4.1 作者推荐
《图解算法:使用C++(视频教学版)》采用C++语言演绎算法思维,帮助读者轻松理解数据结构及其算法的设计,即使是零基础的读者也能快速上手编程。 通过丰富的图例,《图解算法:使用C++(视频教学版)》简明地阐述了算法的基础概念,并提供了实际的例子来进一步说明。同时,强调了程序设计逻辑,以C++语言实现各种算法在程序设计领域的应用。 书中设计了难易适中的习题,可以帮助读者进一步演练和验收学习效果。此外,还提供了精心录制的教学视频,为读者提供更加全面的学习支持。《图解算法:使用C++(视频教学版)》力求化繁为简,即使是编程小白也能轻松读懂。作为一本轻量级的算法书,它是提高程序设计水平、提升个人价值的**投资。
4.2 图书目录
目 录
第1章 进入算法的世界 1
1.1 计算思维 2
1.1.1 分解 3
1.1.2 模式识别 4
1.1.3 模式概括与抽象 4
1.1.4 算法 5
1.2 计算思维的脑力大赛 6
1.2.1 三分球比赛灯记录器 6
1.2.2 图像字符串编码 7
1.2.3 计算机绘图指令实践 7
1.2.4 炸弹超人游戏 8
1.3 生活中处处都存在算法 8
1.3.1 算法的条件 9
1.3.2 时间复杂度O(f(n)) 11
1.4 课后习题 13
第2章 经典算法介绍 14
2.1 分治法 14
2.2 递归法 15
2.3 贪心法 18
2.4 动态规划法 19
2.5 迭代法 21
2.6 枚举法 23
2.7 回溯法 29
2.8 课后习题 35
第3章 常用数据结构 36
3.1 认识数据结构 37
3.2 常见的数据结构 39
3.2.1 数组 39
3.2.2 链表 42
3.2.3 堆栈 43
3.2.4 队列 44
3.3 树结构简介 44
3.3.1 树的基本概念 45
3.3.2 二叉树 46
3.4 图论简介 47
3.5 哈希表 49
3.6 课后习题 50
第4章 排序算法 52
4.1 认识排序 52
4.1.1 排序的分类 53
4.1.2 排序算法分析 53
4.2 冒泡排序法 54
4.3 选择排序法 58
4.4 插入排序法 61
4.5 希尔排序法 63...
购买链接
京东链接: https://item.jd.com/
五、粉丝福利
-
✅参与方式:
关注
博主、点赞
、收藏
、评论
,任意评论(每人最多评论三次) -
⛳️本次送书
1~3
本【取决于阅读量,阅读量越多,送的越多
】 -
📆 活动时间至:2023-1-28 10:00:00 | 随机抽取由博主动态公布抽奖结果
如有特别需要的同学可添加博主微信进入粉丝福利群发放福利哦!
🔥 注:活动结束后,会私信中奖粉丝的,各位注意查看私信哦!
⛳️ 文章末尾扫码加入粉丝群,不定期发放粉丝福利,各种专业书籍免费赠送!
📝文章结语:
☁️ 看到这里了还不给博主扣个:
⛳️ 点赞
🍹收藏
⭐️ 关注
!
💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
拜托拜托这个真的很重要!
你们的点赞就是博主更新最大的动力!文章来源:https://www.toymoban.com/news/detail-824521.html
文章来源地址https://www.toymoban.com/news/detail-824521.html
到了这里,关于【C++干货基地】C++入门篇:输入输出流 | 缺省函数 | 函数重载(文末送书)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!