簡介
- 1. 概況
- 2. 開發工具
- 3. mac 寫hello word
- 4. c++ 基本概念
- 5.兩個數相加代碼分解
- 5.1編譯預處理命令# include
- 5.2輸入輸出庫iostream
- 6.注釋
- 7.編碼規范
《老九學堂C++課程》《C++ primer》學習筆記。《老九學堂C++課程》詳情請到B站搜索《老九零基礎學編程C++入門》
1. 概況
20世紀70年代,貝爾實驗室的Thompson和Ritchie在想玩游戲的過程中,開發了C語言用于重寫unix系統。
20世紀80年代貝爾實驗室Bjarne Stroustrup在C語言的基礎上開發了C++ ,主要是為了解決軟件設計危機。C++應用范圍:Office工具,編譯器,操作系統,大型游戲。
一開始C++叫帶類的C,可想而知其和C語言的關系。
C++衍生出了Java(語法比較簡單),Java和C# 是兄弟。
2. 開發工具
1.記事本+命令行–專業大牛身份標識別,上手慢;
2.Visual c++ – 經典開發工具,與流行的操作系統有沖突;
3.VS --功能強大,體積同樣強大;(3-5G)只支持微軟版本的C,但是課程推薦標準C。
4.Code::blocks–開源免費C++開發工具,專業開發人員推薦
5.DEV C++, Xcode, Clion(收費), C-free(國產), Xcode(蘋果公司的開發工具mac),C4droid(手機端運行)
6.eclipse c++ 開發
3. mac 寫hello word
1.Mac OS中使用VScode配置C++語言開發環境
一鍵運行,不用配置編譯,運行,調試:
2.在mac上使用vscode創建第一個C++項目
(不會配置,回頭再說)
#include <iostream>
int main()
{ std::cout<<"hello world 2" << std::endl;return 0;
}
4. c++ 基本概念
1.每個C++程序都包含至少一個函數,至少一個函數為main函數。操作系統通過調用main函數來執行程序(唯一被操作系統顯示調用的函數)。
2.函數定義4要素:
?–>返回類型–main 函數的返回類型一定要是int,return語句所返回值的類型必須和函數返回類型一致。main返回0表示其成功執行,其他非零的值都有操作系統定義的含義,-1表示程序運行失敗。
?–>函數名–函數名的命名規范
–?>圓括號–(參數列表)
–?>函數體–以花括號包圍的語句塊
3.c++中的語句大多數都是以分號結尾。(不用分號:塊語句,大括號括起來的)
4.源文件–保存待編譯程序的文件,源文件的后綴與具體編譯器有關。有.cpp .cp .c等等,C++ primer 一書中的源文件以.cc結尾。
5.常用編譯器
? gnu-默認命令為g++ prog1.cc -o prog1
? 微軟visual studio: cl -GX prog1.cpp
6.表達式:C++中表達式有一個/幾個操作數+操作符組成;每個表達式都會產生一個結果,通常是將操作符作用到操作數所產生的值。
7.定義一個變量,最好記得賦初值(變量的初始化)。
5.兩個數相加代碼分解
#include <iostream>
int main(){std::cout<<"Enter two numbers:"<<std::endl;int v1,v2;std::cin>>v1>>v2;std::cout<<"The sum of "<<v1<<" and "<< v2<< " is "<< v1+v2 << std::endl;return 0;
}
5.1編譯預處理命令# include
編譯預處理命令,尖括號中是一個頭文件的名字,程序使用庫文件必須包含相關的頭文件。編譯預處理命令應該寫在文件的最開始部分。
C 頭文件一般是.h結尾,C++采用C前綴兼容C頭文件,其底層實際還是導入了.h文件。也可以在C++中采用.h的頭文件。
5.2輸入輸出庫iostream
iostream 格式化處理輸入輸出數據的標準庫,iostream 的基礎:istream,ostream。
秉持C++一切皆對象原則,iostream 庫包含4個標準輸入輸出對象
iostream 庫4個標準輸入輸出對象 | |
---|---|
cin | 標準輸入 |
cout | 標準輸出 |
err | 標準錯誤,用于輸出警告和錯誤給程序使用者,try -expect? |
clog | 產生程序執行的一般信息?這些信息是什呢? |
<< | 輸出操作符;兩個操作數:左操作數–ostream對象,右操作數–輸出內容;返回左操作數,所以可以連接輸請求 |
>> | 輸入操作符;兩個操作數:左操作數–ostream對象,右操作數–變量;返回左操作數,所以可以連接輸請求 |
endl | 操縱符;輸出換行符并清空緩存區,通過刷新緩沖區,使得用戶立即可以看到寫入到流中的內容[\n+fflush(stdin)] |
std:: | 前綴 ,其表明 cout,cin 和 endl 是定義在命名空間 std 中的,可以避免與庫中定義的名字相同而引起無意沖突 |
不用endl也是能看到,就是沒有換行而已
忘記刷新輸出流可能會造成輸出停留在緩沖區中,如果程序崩潰,將會導致程序錯誤推斷崩潰位置。
命名空間是C++的一大特性,用來在編寫大型程序時組織源代碼。
6.注釋
注釋用于概括算法、確認變量的用途或者闡明難以理解的代碼段。
注釋并不會增加可執行程序的大小,編譯器會忽略所有注釋。
錯誤的注釋比沒有注釋更可怕
//–單行注釋
/**/–定界符號,用于段落注釋。多行注釋時,注釋內容的每一行都用* 開始,表明這一行是注釋塊的一個 部分。一般將注釋塊放在要解釋的代碼上方。
臨時注釋,建議用單行注釋符。
7.編碼規范
1.每條語句占一行
2.函數體花括號獨占一行
3.函數中的語句相對于花括號進行縮緊
4.函數名后緊跟小括號,沒有空格
注釋的模版
/***************************************** 文件名:xxx* 創建人:xxx* 日 期:xxx* 修改人:xxx* 日 期:xxx* 版 本:1.0.0****************************************/
//****************************************
// Method:
// Fullname:
// Access: public
// Return: viod
// Parameter: int fontsize
//****************************************