資料來源
https://www.bilibili.com/video/BV1et411b73Z/?spm_id_from=333.337.search-card.all.click&vd_source=cc561849591f6a210152150b2493f6f3
簡單知識點
建立專案
-
用VS建立了一個C++的空專案。
-
在【原始檔】中建立一個cpp檔案
-
書寫以下程式碼並執行
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world" << endl;
system("pause");
return 0;
}
註釋
- 單行註釋:
//
- 跨行註釋:
/* */
變數
變數定義的語法:資料型別 變數名 = 變數值
int a = 100;
cout << "a = " << a << endl;
常量
有兩種:
- 宏常量
#define PI 3.1415926
int main()
{
//PI = 3;//會報錯,不能再修改了
cout << "PI = " << PI << endl;
system("pause");
return 0;
}
注意#define
的位置一般放在檔案頭部(方便集中瀏覽和修改),當然也能放到函式里面(在呼叫位置前面)。
- const修飾的常量
int main()
{
const int PI = 3.14;
//PI = 3;//不能再修改了
cout << "PI = " << PI << endl;
system("pause");
return 0;
}
識別符號命名規則
- 不能用關鍵字
- 只能使用字母、數字、下劃線
- 開頭不能用數字
- 區分大小寫
- 建議命名時見名知義(非強制)
資料型別
資料型別的意義:給變數分配合適的記憶體空間。
整型
short a1 = 1;
int a2 = 1;
long a3 = 1;
long long a4 = 1;
cout << a4 << endl;
//short取值範圍:-32768 到 32767
short a1 = 32767;
short a2 = 32768;
cout << a1 << endl;//32767
cout << a2 << endl;//-32768
檢視型別所佔記憶體長度
使用sizeof(資料型別 / 變數)
short a = 1;
int size_a = sizeof(a);
int size_int = sizeof(int);
cout << size_a << endl;//2
cout << size_int << endl;//4
cout << sizeof(long) << endl;//4
cout << sizeof(long long) << endl;//8
實型(浮點型)
- 單精度float
- 雙精度double
float f1 = 3.14f;//如果不加f會將其當做double轉為float
cout << f1 << endl;
double d1 = 3.14159265354;
cout << d1 << endl;//預設輸出一個小數,會顯示6位有效數字
cout << "float佔用空間:" << sizeof(float) << endl;//4
cout << "double佔用空間:" << sizeof(double) << endl;//8
科學記數法:
float f2 = 3e5;
cout << f2 << endl;//300000
float f3 = 3e-2;
cout << f3 << endl;//0.03
字元型
用於表示單個字元。
char ch = 'a';
char ch = 'd';
cout << ch << endl;//d
cout << sizeof(char) << endl;//1
注意:
- 用單引號
- char佔一個位元組。
- 字元變數儲存的不是字元本身,而是其ASCII碼。
檢視字元型變數的ASCII碼:
int a = (int)'a';
cout << a << endl;//97
a:97
A:65
跳脫字元
表示一些不能顯示出來的ASCII碼。
常用的跳脫字元有:\n
(換行)、\\
(反斜槓)、\t
(水平製表)
字串型
用於表示一串字元。
兩種風格:
- C風格字串
char str[] = "hello";
- C++風格字串
string str2 = "world";
有的VS低版本中需要加入標頭檔案才能支援string:#include <string>
布林型別
代表真假,有兩種值:true(本質是1)、false(本質是0)。
佔一個位元組。
bool a = true;
bool b = false;
cout << a << endl;//1
cout << b << endl;//0
cout << sizeof(bool) << endl;//1
資料的輸入
作用:從鍵盤獲取資料。
注意:
- 針對int、float、double等數值型,輸入的值如果無法轉為int,則轉為0.
- 針對bool,輸入的值如果能轉為非0的int,則轉為1,否則轉為0.
運算子
算數運算子
注意:
- 整數相除,結果還是整數,會去除小數。
- 被除數為0會報錯。
- 取模是求餘數。
- 兩個整數才能做取模。
賦值運算子
比較運算子
cout << (10 < 9) << endl;//0
邏輯運算子
cout << !100 << endl;//100是真,取反為假
程式流程結構
順序結構、選擇結構、迴圈結構
支援三目運算子:
表示式 ? 值1 : 值2
- 三木運算子可以返回變數:
(a > b ? a : b) = 100
switch語句:
- 只能支援整型或者字元型,不支援區間
goto語句:
無條件跳轉到某個標記(不建議使用)。
cout << 1 << endl;
cout << 2 << endl;
goto FLAG;
cout << 3 << endl;
cout << 4 << endl;
FLAG:
cout << 5 << endl;
cout << 6 << endl;
一維陣列
三種定義方式:
一維資料名稱的用途:
- 統計整個陣列在記憶體中的長度
統計陣列從起始位置到末尾位置的長度:sizeof(arr)
第一個元素的長度:sizeof(arr[0])
陣列元素個數等於前兩者相除了。 - 獲取陣列在記憶體中的首地址
列印陣列首地址(16進位制):
cout << "陣列首地址:" << arr2 << endl;//000000C7FBBCFCA8
cout << "陣列首地址:" << (int)arr2 << endl;//-71500632 強轉int了
//列印各個元素的地址
cout << "元素1的地址:" << (int)&arr2[0] << endl;//-71500632
cout << "元素2的地址:" << (int)&arr2[1] << endl;//-71500628 (和元素1的地址相差4個位元組,正好是一個int的大小)
注意:陣列名是一個常量,不能給其再賦值。
二維陣列
四種定義方式:
int arr[4][4];
int arr2[2][1] = { {1}, {2} };
int arr3[2][1] = { 1, 2 };
int arr4[][1] = { {1}, {2} };
二維陣列名稱用途:
- 檢視陣列所佔記憶體空間
- 檢視二維陣列首地址
函式
int add(int n1, int n2) {
return n1 + n2;
}
int main()
{
cout << add(1, 2) << endl;
system("pause");
return 0;
}
值傳遞:
- 函式呼叫時,實參的值傳遞給函式定義中的形參
- 形參的值修改,不會影響實參的值。
函式的宣告:
- 為了告訴編譯器函式的名稱,以及如何呼叫函式。
- 函式的主體可以單獨定義。
- 函式可以宣告多次,但定義只有一次。
//用函式宣告,提前告訴編譯器函式存在
int add(int n3, int n4);
int main()
{
cout << add(1, 2) << endl;
system("pause");
return 0;
}
int add(int n1, int n2) {
return n1 + n2;
}
函式的分檔案編寫:
- 標頭檔案add.h中,宣告函式:
int add(int n1, int n2);
- 原始檔add.cpp中,定義函式:
#include "add.h"
#include <iostream>
using namespace std;
int add(int n1, int n2)
{
int n3 = n1 + n2;
cout << n3 <<endl;
return n3;
}
注意:#include時,雙引號表示自定義的標頭檔案
- main函式中引入標頭檔案,呼叫標頭檔案中的函式:
#include <iostream>
using namespace std;
#include "add.h"
int main()
{
cout << add(1, 4) << endl;
return 0;
}