1.注意與cin的》區分,cout是<<
2.endl用於換行
3.cout是從後向前執行,《操作符的遞迴呼叫,先遞迴執行的是最後乙個,引數壓棧的順序是從右向左,輸出則是從左到右。
例:
#include#includeusing namespace std;
int main()
輸出:
2 1
4*str2:e *str2++ :h
*str2 e
str :hello world
1.宣告:一條負責為程式引入乙個新的名字的語句,並指定型別。
2.定義:描述語句的具體實現方法
3.在標頭檔案中只做宣告,不要定義,在cpp檔案中進行定義
4.若在標頭檔案中寫出了int a;這樣的語句,而在cpp檔案中再次int a;則是錯誤的
應在標頭檔案中int a;前加extern關鍵字,表示現在有乙個int型變數叫做a
cpp中的int a;表示告訴編譯器這個叫a的int型變數在這裡
5.speaking of extern,extern const int a表示有個整型變數a,在此處為不可修改
6.c++支援在定義變數的同時使用,如
for( int i = 0 ; i < 10 ; i++ )
1.標頭檔案:一般無需加.h字尾,呼叫c的庫只需在前面加c,後面也不需要加.h字尾
例如:#include
萬能標頭檔案:#include
該標頭檔案包含了c++所有的庫,但有些編譯器會提示無該標頭檔案(如win端的visual studio和mac端的xcdoe)
2.型別:定義一組可能的值,以及一組物件上的操作。
3.物件:存放某型別值的記憶體空間。
4.值:一組二進位制位,具體的含義由其型別決定。
5.更加通用的初始化方法:
?:int i / int i = //等號在此時可省
6.兩個「不變」:
(1)const:主要用於說明函式介面。
(2)constexpr:主要用於說明常量,作用是允許將資料置於唯讀記憶體中以提公升效能。
7.空指標表達方式:nullptr,而null在c++作為乙個巨集其值為0
8.範圍for迴圈(預先定義陣列 int v = )
(1)for ( auto x: v) cout《輸出:12345
(2)for ( auto & x : v ) cout《輸出:12345
二者區別是:第二種用於不希望將v的值拷貝到變數x中,而只想令x指向乙個元素時
9.在c++中,這兩個函式仍然可以使用,但是c++又新增了兩個關鍵字,new 和 delete:new 用來動態分配記憶體,delete 用來釋放記憶體。
用 new 和 delete 分配記憶體更加簡單:
int *p = new int; //分配1個int型的記憶體空間delete p; //釋放記憶體
new 操作符會根據後面的資料型別來推斷所需空間的大小。
如果希望分配一組連續的資料,可以使用 new:
int *p = new int[10]; //分配10個int型的記憶體空間delete p;
用 new 分配的記憶體需要用 delete 釋放,它們是一一對應的。
和 malloc() 一樣,new 也是在堆區分配記憶體,必須手動釋放,否則只能等到程式執行結束由作業系統**。為了避免記憶體洩露,通常 new 和 delete、new 和 delete 操作符應該成對出現,並且不要和c語言中 malloc()、free() 一起混用。
在c++中,建議使用 new 和 delete 來管理記憶體,它們可以使用c++的一些新特性,最明顯的是可以自動呼叫建構函式和析構函式,後續我們將會講解。
10.在c++中定義或宣告乙個函式時,有時會在形參中給它賦乙個初始值作為不傳引數時候的預設值,
例如:int fun ( int a = 10 ) ;
代表沒有傳參呼叫的時候,自動給a賦乙個10的初始值。
且賦初始值遵循從右至左的順序。
例如:int fun(int a ,int b = 10);
int fun(int a = 20,int b);
可以,但若反轉這是錯誤的。
11. 傳引用和傳常量引用
函式傳值傳遞的是拷貝,在傳遞占用空間小的值時簡單,直接,高效,但若較大,則代價高昂,此時可採用傳(常量)引用的方式。
例如,void print(vector& v); //引用引數需要指向乙個變數,而非常量
若不想讓函式內部意外修改引數的值,則上述宣告可寫作:
void print(const vector& v);
盡量少的使用傳引用的方式,若使用,認為函式必定修改了這個值。
12.引用的語法機制
?:
int i=7,&r=i;
r=9;
i=10;
cout << r <<' '<< i << endl;
輸出:10 10
也就是說,任何對r的使用實際都是對i的使用,反之亦然。
13.constexpr函式要求必須非常簡單,只可包含一條return語句(c++11)或簡單的迴圈語句(c++14)
14.變數的銷毀順序與建立順序相反(後進先出原則)
15.為解決合作開發時的命名衝突的問題,引入命名空間的概念。
16.盡量避免在表示std以外的地方使用using語句
(1)const修飾指標——常量指標
int a=10;
const int *p = &a;
特點:指標的指向可以修改,但是指標指向的值不可以修改
*p = 20; //錯誤,指標指向的值不可以修改
p=&b; //指標指向可以改
//可以理解為const離&a太遠,不能限制指標的指向
(2)const修飾常量——指標常量
int a =10;
int * const p = &a;
特點:指標的指向不可以改,指標指向的值可以改
//可以理解為const在*後面,不能限制其解引用,也就不能限制其修改值
*p = 20; //正確,指向的值可以改
p=&b; //錯誤,指標指向不可改
(3)const既修飾指標,又修飾常量
int a = 10;
const int * const p =&a;
特點:指標的指向和指標指向的值都不可以改
*p = 20; //錯誤,指標指向的值不可修改
p = &b; //錯誤,指標的指向不可修改
(1)int *p[3];
指標陣列:本質為儲存3個指標的陣列
(2)int *(p[3]);
指標陣列
(3)int (*p)[3];
陣列指標:本質為儲存乙個含有3個元素的陣列的指標
訪問值用」.」運算子
訪問指標用」->」運算子
C基礎複習
c基礎複習 1.資料型別 有符號數是最高位為符號位,0代表正數,1代表負數。無符號數最高位不是符號位,而就是數的一部分,無符號數不可能是負數。當我們寫程式要處理乙個不可能出現負值的時候,一般用無符號數,這樣可以增大數的表達最大值。有符號 signed 無符號 unsigned 預設情況下,定義變數時...
從c到c 引用與常引用
下面的寫法定義了乙個引用,並將其初始化為引用某個變數。型別名 引用名 某變數名 int n 4 int r n r引用了 n,r的型別是 int 某個變數的引用,等價於這個變數,相當於該變數的乙個別名。例 int n 4 int r n r 4 cout r 輸出 4 cout n 輸出 4 n 5...
c陣列與指標難點
include stdafx.h include using namespace std int tmain int argc,tchar argv ptr2是乙個指向 int 的指標,即ptr2的型別和 ptr是一樣的,注意 ptr指向的記憶體區域不定長 int ptr2 3 ptr3是乙個指向 ...