01 C 語法基礎

2021-09-25 10:35:57 字數 4098 閱讀 7482

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 程式總共分為四...