1、引用
定義乙個引用,並將其初始化為引用某個變數。
型別名 & 引用名 = 某變數名;
int n =4;
int&r = n;
//r引用了n,r的型別是int &
某個變數的引用,等價於這個變數,相當於該變數的乙個別名。
注:
引用的簡單示例:
在c語言中:
void
swap
(int
*a,int
*b)int n1,n2;
swap
(&n1,
&n2)
;//n1,n2的值被交換
有了c++的引用後:
void
swap
(int
&a,int
&b)int n1,n2;
swap
(n1,n2)
;//n1,n2的值被交換
在定義引用時,前面加const關鍵字,即為「常引用」
int n;
const
int&r = n;
此時r的型別為const int &
不能通過引用去修改其引用的內容:
int n =
100;
const
int&r = n;
r =10
;//編譯出錯,因為此時r為乙個常引用,不能修改其內容
n =200
;//編譯沒問題
常引用和非常引用的轉換:
const t & 和t & 是不同的型別。
2、const關鍵字
1)定義常量,類似於c中的define。
const
int max_val =10;
const
double pi =
3.14
;const
char
*school_name = 「peking university」;
2)定義常量指標
注:不可通過常量指標修改其指向的內容
int n,m;
const
int*p =
&n;*p =5;
//編譯出錯。因為此時*p是常量指標
n =4
;//ok
p =&m;
//ok,常量指標的指向可以變化
不能把常量指標賦值給非常量指標,反過來可以
const
int*p1;
int*p2;
p1 = p2;
//ok
p2= p1;
//error
p2 =
(int
*) p1;
//ok,強制型別轉換
3)定義常引用(在上面已經提到過)
3、動態內容分配
用new運算子實現動態記憶體分配
1)分配乙個變數:
p = new t;
t:任意型別名
p:型別為t * 的指標
2)分配乙個陣列:
p = new t[n]
;
t:任意型別名
p:型別為t * 的指標
n:要分配的陣列元素的個數,可以是整型表示式
動態分配出一片大小為n * sizeof(t)位元組的記憶體空間,並且將該記憶體空間的起始位址賦值給p。
用"new"動態分配的記憶體空間,一定要用「delete」運算子進行釋放
delete指標;//該指標必須指向new出來的空間.
delete 指標;
一片儲存空間不能被delete多次
c 學習筆記01
c 標準輸入輸出流類物件 cin cout cerr 對應c語言中的3個檔案指標 stdin,stdout stderr 結構體和類的區別主要在訪問控制方面 訪問許可權分為3種 public,private,protect 結構體是一種特殊的類預設為public 類預設為private 物件導向思想...
C 篇 C 學習筆記01
整行輸入 includestring mystr getline cin,mystr 字串相加 includestring s1 i am string s2 a boy string s3,s4 s3 s1 s2 s4 8 給字元陣列賦值 includechar szmyname 20 strcp...
C 學習筆記 01揹包
時間限制 20000ms 單點時限 1000ms 記憶體限制 256mb 且說上一周的故事裡,小hi和小ho費勁心思終於拿到了茫茫多的獎券!而現在,終於到了小ho領取獎勵的時刻了!小ho現在手上有m張獎券,而獎品區有n件獎品,分別標號為1到n,其中第i件獎品需要need i 張獎券進行兌換,同時也只...