1.demo示例
#include
using namespace std;
// main() 是程式開始執行的地方
int main()
2.標頭檔案 no .h
3.命名空間
如:using namespace std;
才能直接使用std中的cout cin endl等,否則要指明:std::cout...
4.標示符通過c
5.關鍵字:很多...
6.注釋:同c
7.資料型別:bool char wchar_t short int long size_t float double string
8.typedef:同c
9.define:同c
10.enum:同c
11.c++中的左值與右值:
左值:指向記憶體位置的表示式被稱為左值(lvalue)表示式。左值可以出現在賦值號的左邊或右邊。
右值:指的是儲存在記憶體中某些位址的數值。右值是不能對其進行賦值的表示式,即:右值可以出現在賦值號的右邊,但不能出現在賦值號的左邊。
12.區域性變數、全域性變數和作用域:同c
局var不會初始化,全var會初始化...
13.常量:在c++中有兩種簡單方式定義常量:const define
另外:如int s = "jsdfh"; false true 都是常量
14.c++的型別修飾符與限定符:
型別修飾符:signed unsigned等
型別限定符:const volatile restrict(c99)等
16.c++運算子及優先順序:同c:賦值運算子 邏輯運算子 位運算子 成員運算子 sizeof運算子 條件(三目)運算子 指標運算子 等等
17.流程控制之條件判斷:if ...else... switch() case...break... ?a:b
18.流程控制之迴圈控制:for(;;) while(){} do{}...while(); continue break
19.引用:見28.
20.函式:與c有異同
主要是:(1)引用型別在引數和函式上的定義;(2)函式命名空間的處理(當class 成員函式或var在外部定義時需要用到)
21.c++11 提供了對匿名函式的支援,稱為 lambda 函式(也叫 lambda 表示式)
lambda 表示式把函式看作物件。lambda 表示式可以像物件一樣使用,比如可以將它們賦給變數和作為引數傳遞,還可以像函式一樣對其求值。
lambda 表示式本質上與函式宣告非常類似。lambda 表示式具體形式如下:
[capture](parameters)->return-type
(int x, int y) -> int //匿名:沒有函式名,但是返回值和引數和函式體啥的都有(引數和返回值可為空)
在lambda表示式內可以訪問當前作用域的變數,這是lambda表示式的閉包(closure)行為。
c++變數傳遞有傳值和傳引用的區別。可以通過前面的來指定:
// 沒有定義任何變數。使用未定義變數會引發錯誤。
[x, &y] // x以傳值方式傳入(預設),y以引用方式傳入。
[&] // 任何被使用到的外部變數都隱式地以引用方式加以引用。
[=] // 任何被使用到的外部變數都隱式地以傳值方式加以引用。
[&, x] // x顯式地以傳值方式加以引用。其餘變數以引用方式加以引用。
[=, &z] // z顯式地以引用方式加以引用。其餘變數以傳值方式加以引用。
另外有一點需要注意。對於[=]或[&]的形式,lambda 表示式可以直接使用 this 指標。
但是,對於的形式,如果要使用 this 指標,必須顯式傳入:
[this]() ();
23.c++的隨機數:(1)srand((unsigned)time(null));(2)n = randl();
24.c++的陣列和c幾乎無異
25.c++的容器:vector 特點:可動態增刪、具有一系列方法,任意型別
標頭檔案:
定義:vectorvector_name; vectorv1;
vectorvector_name(max, initval); vectorv2(5,0);
vector< vector< int> >v; //二維
從尾部增刪:vector_name.push_back(val); vector_name.pop_back(val); vector_name.clear();
訪問:法一,同陣列方式訪問
法二:使用迭代器:
vector::iterator it;//宣告乙個迭代器,來訪問vector容器,作用:遍歷或者指向vector容器的元素
for(it=obj.begin();it!=obj.end();it++)
26.c++對字串的處理:
(1)可以用c一樣處理字串,其中標頭檔案cstring中有很多函式可以使用:strcat strcmp strchr strstr等
(2)c++的string類:基於string型別:
可執行一些快速的字串複製 ;字串拼接 "dada" + "af" ;計算字串長度:string s = "adas"; int len = s.size();//計算有效字元,這裡為4
27.c++指標:同c
28.引用:引用變數是乙個別名,也就是說,它是某個已存在變數的另乙個名字。
一旦把引用初始化為某個變數,就可以使用該引用名稱或變數名稱來指向變數。
c++ 引用 vs 指標:引用很容易與指標混淆,它們之間有三個主要的不同:
(1)不存在空引用。引用必須連線到一塊合法的記憶體。
(2)一旦引用被初始化為乙個物件,就不能被指向到另乙個物件。指標可以在任何時候指向到另乙個物件。
(3)引用必須在建立時被初始化。指標可以在任何時間被初始化。
在函式中的重點應用:
(1)引用作為函式引數:
對比三種引數傳遞:int a = 10, b = 20;
第一種:簡單的值傳遞void swap(int x, int y); 呼叫:swap(a,b); //int x = a; x複製a的值
第二種:指標傳遞void swap(int *x, int *y); 呼叫:swap(&a,&b); //int *x = &a; x取得a的位址
第三種:引用傳遞void swap(int& x, int& y); 呼叫:swap(a,b); //int&x = a; x是a的乙個別名
(2)引用作為函式返回值:
int ns[3] = ;
int& setvalue(int i)
在main中:
setvalue(0) = 5; //因為返回值是乙個引用,也就是ns[i]的乙個別名,是可以做為左值的。
int a = setvalue(1); //右值更函式無問題
std::cout << ns[0] << std::endl << a << std::endl;
29.時間time:同c,在ctime標頭檔案中宣告類相關函式:
unsigned int t = time(0);
char *ts = ctime(&t);
tm* tmt = localtime(&t);
struct tm
示例:char buffer[30] = ;
30.c++的i/o:
最常用的是標頭檔案的std::cout std::cin std::cerr std::clog
using namespace std;
cout << "dfas" << endl;
int a; cin >> a;
cerr << "error:" << strerror << endl; //非緩衝型,即使輸出到標準裝置螢幕
clog << "error:" << strerror << endl; //緩衝型,當緩衝區滿時,才會重新整理緩衝區
31.c++的結構體:同c
無非就是結構體的定義,可以結合typedef;還有在函式返回值及引數部分用結構體。
傳參時最好用結構體指標或者結構體引用型別。
C 零基礎(01) C 基礎語法
二 c 標準輸入 三 命名空間 總結 主要介紹區別於c語言的常用基礎語法 include 例輸出字串 std cout hello,world std endl 終端列印 hello,world 例輸出變數 int count 10 std cout count std endl 終端列印 10 例...
C 基礎 01 C 初識
學習一門新的程式語言,必須實際動手編寫程式 語言基本特徵 1.內建資料型別 2.表示式和語句 用於操作上述型別 3.變數 可以使用變數對所用的物件命名 4.控制結構 可以使用控制結構有條件地執行或重複執行一組動作 5.函式 可以使用函式把行為抽象成可呼叫的計算單元 int main 與其它程式語言的...
C 基礎程式設計 01 C 初識
階段內容 目標案例 第一階段 c 基礎入門 對c 有初步了解,能夠有基礎程式設計能力 通訊錄管理 第二階段 c 核心程式設計 介紹c 物件導向程式設計,為大型專案做鋪墊 職工管理系統 第三階段 c 提高程式設計 介紹c 泛型程式設計思想,以及stl的基本使用 演講比賽系統 編寫乙個c 程式總共分為四...