引入
??哈嘍各位鐵汁們好啊,我是博主鴿芷咕《C++干貨基地》是由我的襄陽(yáng)家鄉(xiāng)零食基地有感而發(fā),不知道各位的城市有沒(méi)有這種實(shí)惠又全面的零食基地呢?C++ 本身作為一門(mén)篇底層的一種語(yǔ)言,世面的免費(fèi)課程大多都沒(méi)有教明白。所以本篇專(zhuān)欄的內(nèi)容全是干貨讓大家從底層了解C++,把更多的知識(shí)由抽象到簡(jiǎn)單通俗易懂。
?? 推薦
前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站。
一、C++的輸入輸出
每當(dāng)我們學(xué)習(xí)一個(gè)函數(shù)的時(shí)候,最首先學(xué)習(xí)的就是輸入和輸出那么我們來(lái)看看C++是如何來(lái)像這個(gè)世界打個(gè)招呼吧!
1.1 cout 輸出函數(shù)
在C++ 中的輸入函數(shù)做了新的升級(jí)而且在以往我們 寫(xiě)C語(yǔ)言的時(shí)候每個(gè)類(lèi)型的變量都要書(shū)寫(xiě)函數(shù)類(lèi)型過(guò)于瑪法了所以在 C++ 輸出是自動(dòng)識(shí)別類(lèi)型的:
-
cout
中的C
是console
控制臺(tái)的意思: -
cout
就代表 輸出到控制臺(tái)
?? 代碼演示:
#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;
}
這里補(bǔ)充一下,C++在開(kāi)發(fā)出來(lái)的時(shí)候本賈尼博士覺(jué)得寫(xiě) “\n”
來(lái)進(jìn)行換行臺(tái)麻煩了所以:
- 在C++ 中換行是
endl
-
endl
代表的英文意思是 -
end
代表結(jié)束,l
是line
行的意思,結(jié)束這一行就是換行的意思
1.2 <<流插入 & >> 流提取
在C++中 <<是流插入運(yùn)算符,>>是流提取運(yùn)算符。同時(shí)C++也兼容
- C語(yǔ)言中 << 左移操作符 >> 右移動(dòng)操作符
?? 代碼演示:
#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 輸入函數(shù)
cin 是C++ 中的輸入函數(shù),和 cout 一樣都是 ostream和istream類(lèi)型的對(duì)象,需要我們搭配流提取操作符一起使用:
?? 代碼演示:
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
int main()
{
int a = 0;
cin >> a;
cout << a << endl;
return 0;
}
二、缺省函數(shù)
缺省函數(shù) 又叫 默認(rèn)參數(shù) 聽(tīng)名字其實(shí)就能大概猜出來(lái)是什么意思,其實(shí)就是當(dāng)我們沒(méi)有給函數(shù)參數(shù)傳遞值的時(shí)候就使用我們賦予的缺省值/默認(rèn)值。
2.1 缺省函數(shù)的概念
缺省參數(shù)是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)缺省值。在調(diào)用該函數(shù)時(shí),如果沒(méi)有指定實(shí)
參則采用該形參的缺省值,否則使用指定的實(shí)參。
?? 代碼演示:
void Func(int a = 0)
{
cout<<a<<endl;
}
int main()
{
Func(); // 沒(méi)有傳參時(shí),使用參數(shù)的默認(rèn)值
Func(10); // 傳參時(shí),使用指定的實(shí)參
return 0;
}
2.2 缺省函數(shù)的分類(lèi)
2.2.1 全缺省函數(shù)
全缺省函數(shù)就是函數(shù)的全部形參給了缺省值或者默認(rèn)值
?? 代碼演示:
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 半缺省函數(shù)
半缺省函數(shù)就是只給部分缺省值, 但是半缺省參數(shù)必須從右往左依次來(lái)給出,不能間隔著給
- 這是因?yàn)楦糁o參數(shù)的話編譯器并不能自動(dòng)識(shí)別到底是使用缺省參數(shù)還是不使用
- 如果全給了就完全沒(méi)有意義隔著給了
?? 錯(cuò)誤展示:
void fun(int a = 10, int x , int y = 10)
{
}
int main()
{
fun(1);
return 0;
}
這里的1究竟是想給 x 還是 a 呢?如果寫(xiě)倆個(gè)那么隔著寫(xiě)的意義再哪里呢?
?? 代碼演示:
void Func(int a, int b = 10, int c = 20)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}
缺省函數(shù)其實(shí)在實(shí)際范圍應(yīng)用非常的廣泛,讓函數(shù)的用法更加靈活我們可以傳一個(gè)參數(shù)也可以或者傳2個(gè)參數(shù)也可以
- 比如說(shuō)我們?cè)趯?duì)棧開(kāi)辟空間時(shí)候就會(huì)遇到好幾種情況以往我們都是默認(rèn)先開(kāi)辟4個(gè)而現(xiàn)在
?? 代碼演示:
#include<iostream>
#include"Stack.h"
using namespace std;
int main()
{
struct Stack st1;
// 1、確定要插入100個(gè)數(shù)據(jù)
StackInit(&st1, 100);
// 2、只插入10個(gè)數(shù)據(jù)
struct Stack st2;
StackInit(&st2, 10);
// 3、默認(rèn)插入
struct Stack st3;
StackInit(&st3);
return 0;
}
2.2.3 缺省函數(shù)的注意事項(xiàng)
- 1. 半缺省參數(shù)必須從右往左依次來(lái)給出,不能間隔著給
- 2. 缺省參數(shù)不能在函數(shù)聲明和定義中同時(shí)出現(xiàn)
還有一個(gè)很重要的一點(diǎn)是當(dāng)函數(shù)聲明和定義分離的時(shí)候,應(yīng)在聲明中去聲明缺省函數(shù),定義中不能進(jìn)行同時(shí)聲明缺省函數(shù)
2.2.4 函數(shù)聲明和定義分離,缺省函數(shù)只能在聲明定義
為什么函數(shù)聲明和定義分離,缺省函數(shù)只能在聲明定義呢?其實(shí)第一個(gè)原因是因?yàn)?/p>
- ?? 缺省函數(shù)在聲明和定義分離的時(shí)候特別容易寫(xiě)錯(cuò)
- ?? 還有一個(gè)很大的原因是因?yàn)閺木幾g原理上面來(lái)看
源文件在進(jìn)行編譯的時(shí)候就會(huì)出現(xiàn),如果我們不在缺省函數(shù)只能在 聲明定義
缺省函數(shù)的話
- 程序在 編譯的時(shí)候就會(huì)被檢查語(yǔ)法攔截住了
- 預(yù)處理是把
頭文件展開(kāi)
,而頭文件里面我們沒(méi)有聲明缺省函數(shù)參數(shù)
又沒(méi)有寫(xiě)語(yǔ)法上就直接錯(cuò)誤了
?? 錯(cuò)誤示范:
三、函數(shù)重載
在C++ 里面還對(duì)函數(shù)做了新的升級(jí),函數(shù)重載,即一個(gè)函數(shù)名可以根據(jù)參數(shù)類(lèi)型不同擁有多個(gè)功能:
- 這在C語(yǔ)言中是絕對(duì)不支持的那么怎么樣才算函數(shù)重載呢?
3.2 函數(shù)重載概念
函數(shù)重載:是函數(shù)的一種特殊情況,C++允許在同一作用域中聲明幾個(gè)功能類(lèi)似的同名函數(shù),這些同名函數(shù)的形參列表(參數(shù)個(gè)數(shù) 或 類(lèi)型 或 類(lèi)型順序)不同,常用來(lái)處理實(shí)現(xiàn)功能類(lèi)似數(shù)據(jù)類(lèi)型不同的問(wèn)題。
在C++中,只要函數(shù)名相同,函數(shù)參數(shù)不同就可以構(gòu)成重載
- ?? 函數(shù)參數(shù)類(lèi)型不同
#include<iostream>
using namespace std;
// 1、參數(shù)類(lèi)型不同
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);
}
- ?? 函數(shù)個(gè)數(shù)不同
#include<iostream>
using namespace std;
// 2、參數(shù)個(gè)數(shù)不同
void f()
{
cout << "f()" << endl;
}
void f(int a)
int main()
{
f();
f(10);
}
- ?? 參數(shù)順序不同(本質(zhì)上還是參數(shù)類(lèi)型不同)
?? 代碼演示:
#include<iostream>
using namespace std;
// 3、參數(shù)類(lèi)型順序不同
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;
}
四、推薦圖書(shū)
4.1 作者推薦
《圖解算法:使用C++(視頻教學(xué)版)》采用C++語(yǔ)言演繹算法思維,幫助讀者輕松理解數(shù)據(jù)結(jié)構(gòu)及其算法的設(shè)計(jì),即使是零基礎(chǔ)的讀者也能快速上手編程。 通過(guò)豐富的圖例,《圖解算法:使用C++(視頻教學(xué)版)》簡(jiǎn)明地闡述了算法的基礎(chǔ)概念,并提供了實(shí)際的例子來(lái)進(jìn)一步說(shuō)明。同時(shí),強(qiáng)調(diào)了程序設(shè)計(jì)邏輯,以C++語(yǔ)言實(shí)現(xiàn)各種算法在程序設(shè)計(jì)領(lǐng)域的應(yīng)用。 書(shū)中設(shè)計(jì)了難易適中的習(xí)題,可以幫助讀者進(jìn)一步演練和驗(yàn)收學(xué)習(xí)效果。此外,還提供了精心錄制的教學(xué)視頻,為讀者提供更加全面的學(xué)習(xí)支持?!秷D解算法:使用C++(視頻教學(xué)版)》力求化繁為簡(jiǎn),即使是編程小白也能輕松讀懂。作為一本輕量級(jí)的算法書(shū),它是提高程序設(shè)計(jì)水平、提升個(gè)人價(jià)值的**投資。
4.2 圖書(shū)目錄
目 錄
第1章 進(jìn)入算法的世界 1
1.1 計(jì)算思維 2
1.1.1 分解 3
1.1.2 模式識(shí)別 4
1.1.3 模式概括與抽象 4
1.1.4 算法 5
1.2 計(jì)算思維的腦力大賽 6
1.2.1 三分球比賽燈記錄器 6
1.2.2 圖像字符串編碼 7
1.2.3 計(jì)算機(jī)繪圖指令實(shí)踐 7
1.2.4 炸彈超人游戲 8
1.3 生活中處處都存在算法 8
1.3.1 算法的條件 9
1.3.2 時(shí)間復(fù)雜度O(f(n)) 11
1.4 課后習(xí)題 13
第2章 經(jīng)典算法介紹 14
2.1 分治法 14
2.2 遞歸法 15
2.3 貪心法 18
2.4 動(dòng)態(tài)規(guī)劃法 19
2.5 迭代法 21
2.6 枚舉法 23
2.7 回溯法 29
2.8 課后習(xí)題 35
第3章 常用數(shù)據(jù)結(jié)構(gòu) 36
3.1 認(rèn)識(shí)數(shù)據(jù)結(jié)構(gòu) 37
3.2 常見(jiàn)的數(shù)據(jù)結(jié)構(gòu) 39
3.2.1 數(shù)組 39
3.2.2 鏈表 42
3.2.3 堆棧 43
3.2.4 隊(duì)列 44
3.3 樹(shù)結(jié)構(gòu)簡(jiǎn)介 44
3.3.1 樹(shù)的基本概念 45
3.3.2 二叉樹(shù) 46
3.4 圖論簡(jiǎn)介 47
3.5 哈希表 49
3.6 課后習(xí)題 50
第4章 排序算法 52
4.1 認(rèn)識(shí)排序 52
4.1.1 排序的分類(lèi) 53
4.1.2 排序算法分析 53
4.2 冒泡排序法 54
4.3 選擇排序法 58
4.4 插入排序法 61
4.5 希爾排序法 63...
購(gòu)買(mǎi)鏈接
京東鏈接: https://item.jd.com/
五、粉絲福利
-
?參與方式:
關(guān)注
博主、點(diǎn)贊
、收藏
、評(píng)論
,任意評(píng)論(每人最多評(píng)論三次) -
??本次送書(shū)
1~3
本【取決于閱讀量,閱讀量越多,送的越多
】 -
?? 活動(dòng)時(shí)間至:2023-1-28 10:00:00 | 隨機(jī)抽取由博主動(dòng)態(tài)公布抽獎(jiǎng)結(jié)果
如有特別需要的同學(xué)可添加博主微信進(jìn)入粉絲福利群發(fā)放福利哦!
?? 注:活動(dòng)結(jié)束后,會(huì)私信中獎(jiǎng)粉絲的,各位注意查看私信哦!
?? 文章末尾掃碼加入粉絲群,不定期發(fā)放粉絲福利,各種專(zhuān)業(yè)書(shū)籍免費(fèi)贈(zèng)送!
??文章結(jié)語(yǔ):
?? 看到這里了還不給博主扣個(gè):
?? 點(diǎn)贊
??收藏
?? 關(guān)注
!
?? ?? ?? ?? ???? ?? ?? ?? ?? ??
拜托拜托這個(gè)真的很重要!
你們的點(diǎn)贊就是博主更新最大的動(dòng)力!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-824521.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-824521.html
到了這里,關(guān)于【C++干貨基地】C++入門(mén)篇:輸入輸出流 | 缺省函數(shù) | 函數(shù)重載(文末送書(shū))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!