C++ 基础
一.標準
1.輸入:cin >> 變量名;
2.輸出:cout << 變量名;
3.換行并清空緩沖區(qū):endl
4.頭文件:#include<iostream>
輸入輸出流頭文件 C++中的頭文件都不用加.h
5.命名空間:using namespace std;
打開命名空間 標準C++庫中的所有組件都是一個被稱為std的名字空間中聲明和定義的
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 int a; 7 char b; 8 cin >> a >> b; 9 cout << a << " " << b << endl; 10 11 return 0; 12 }
二.作用域 命名空間
1.不同作用域的變量可以重名 使用時 用的是離的近的 作用域小的
2.作用域運算符:::
如果前面沒有類名 命名空間名字代表全局的
1 #include<iostream> 2 using namespace std; 3 4 namespace Bird 5 { 6 int nAge = 100; 7 } 8 9 namespace Person 10 { 11 int nAge = 200; 12 } 13 14 using namespace Bird; 15 16 int main() 17 { 18 cout << nAge <<endl; 19 cout << Person::nAge <<endl; 20 21 return 0; 22 }
注:::的前面可以放命名空間的名字 類名 或者什么都不放
三.動態(tài)分配內存和釋放
1.創(chuàng)建:指針變量 = new 數據類型;
注:new也是在堆區(qū)分配空間
1 int* p = new int; 2 cin >> *p; 3 cout << *p;
2.刪除:delete 指針變量;
1 delete p; 2 p = 0;
注:這個是把p指向的空間刪了 但是指針還在 還裝著原來的地址
3.舉例應用:
①一維數組:
1 int* arr = new int[3]; 2 delete[] arr; 3 arr = 0;
②二維數組:
1 int (*arr)[3]= new int[2][3]; 2 delete[] arr; 3 arr = 0;
注:在刪除數組的時候 不管是幾維的 只寫一個中括號就可以了
③特別注意:在new的時候 []不要打成() !!!
1 int* arr = new int(10);
比如說這行代碼 代表的是分配了一個空間 并且用10把這個空間初始化了
如果讓arr[1] = 100的話就會崩 因為越界了 操作了不屬于你的內存空間
所以因此我們也get到了一個新的初始化的方法:
1 int b(100);
這行代碼執(zhí)行完 b就是100了
四.范圍for(C++11新標準)
1.自動遍歷數組 直到最后一個元素:
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 int arr[10] = {0,1,2,3,4,5,6,7,8,9}; 7 for(int nVal : arr) 8 cout << nVal << endl; 9 10 return 0; 11 }
nVal是一個值 即nVal→arr[i]
把每一個arr中元素的值裝到nVal中 遍歷一次裝一個 會自動的遍歷到最后
如果想控制數組的話還是要用for循環(huán)int i的那種方法去控制
2.auto:
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 int a = 100; 7 auto b = a; 8 9 return 0; 10 }
那么b就是int類型的 auto會自動識別對應的類型 所以可以在for循環(huán)中去用auto
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 int arr[10] = {0,1,2,3,4,5,6,7,8,9}; 7 for(auto nVal : arr) 8 { 9 cout << nVal << endl; 10 } 11 12 return 0; 13 }
五.bool布爾類型
1.bool類型占一個字節(jié) 而Win32中的BOOL類型是把int重命名占4個字節(jié)
2.返回類型:可以用于只有兩種情況的時候
①true 1
②false 0
3.如果函數返回值通常是bool類型 代表這個函數是否執(zhí)行成功
在寫if()括號中的判斷條件的時候 一定要注意些兩個等號 不要丟等號
如果是一個等號 狠可能就進到if中了(0→假 非0→真)
六.string
1.直接看段代碼:這段代碼是錯的錯的錯的!!!
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 char* pName = new char[10]; 7 pName = "123456789"; 8 cout << pName << endl; 9 delete pName; 10 11 return 0; 12 }
pName并不是存到分配的空間中去了
pName一開始指向被分配的空間 然后又讓pName指向了字符常量區(qū)
那么一開始分配的空間就找不到了 再delete就不能刪了 會崩 因為字符常量區(qū)不讓刪
所以字符串的賦值一定不能用等號!!!
字符串的賦值用:strcpy_s(地址空間,長度,"你想存的字符串");
注:初始化和賦值的區(qū)分 就在于:定義的時候就給他一個值 就叫初始化
2.字符串的簡單應用:
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 int main() 6 { 7 string str; 8 str = "aaa"; 9 cout << str << endl; 10 11 string str1; 12 str1 = str + "111"; 13 cout << str1 << endl; 14 15 str1 += "222"; 16 cout << str1 << endl; 17 18 cout<< (str == str1) << endl; 19 return 0; 20 }
注意:
①C++中定義字符串可以用string 非常方便 但是有頭文件:#include<string> 沒有.h
②字符串的拼接可以直接用+號
③可以如18行一樣比較 這個比較結果為0(不等) 相等的話輸出結果為1
轉載于:https://www.cnblogs.com/Aaaaaalei0612/p/9063650.html
總結
                            
                        - 上一篇: 递归函数 集合 列表 元组
 - 下一篇: 求粗开头的成语接龙!