2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

C++指針筆記

 小樣樣樣樣樣樣 2021-04-29

  下面隨筆給出C++指針筆記。

內(nèi)存空間的訪問方式

  • 通過變量名訪問

  • 通過地址訪問

指針的概念

  • 指針:內(nèi)存地址,用于間接訪問內(nèi)存單元

  • 指針變量:用于存放地址的變量

指針變量的定義

  • 例:

  static int i;

  static int* ptr = &i;

  • 例:

  *ptr = 3;

與地址相關(guān)的運(yùn)算——“*”和“&”

  • 指針運(yùn)算符

  • 地址運(yùn)算符:&

指針變量的初始化

  • 語法形式

存儲(chǔ)類型 數(shù)據(jù)類型 *指針名=初始地址;

  • 例:

  int *pa = &a;

  • 注意事項(xiàng)

    • 用變量地址作為初值時(shí),該變量必須在指針初始化之前已聲明過,且變量類型應(yīng)與指針類型一致。

    • 可以用一個(gè)已有合法值的指針去初始化另一個(gè)指針變量。

    • 不要用一個(gè)內(nèi)部非靜態(tài)變量去初始化 static 指針。

指針變量的賦值運(yùn)算

  • 語法形式

指針名=地址

注意:“地址”中存放的數(shù)據(jù)類型與指針類型必須相符

  • 向指針變量賦的值必須是地址常量或變量,不能是普通整數(shù),例如:

    • 通過地址運(yùn)算“&”求得已定義的變量和對(duì)象的起始地址

    • 動(dòng)態(tài)內(nèi)存分配成功時(shí)返回的地址

  • 例外:整數(shù)0可以賦給指針,表示空指針。

  • 允許定義或聲明指向 void 類型的指針。該指針可以被賦予任何類型對(duì)象的地址。

例: void *general;

指針空值nullptr

  • 以往用0或者NULL去表達(dá)空指針的問題:

    • C/C++NULL宏是個(gè)被有很多潛在BUG的宏。因?yàn)橛械膸彀哑涠x成整數(shù)0,有的定義成 (void*)0。在C的時(shí)代還好。但是在C++的時(shí)代,這就會(huì)引發(fā)很多問題。

  • C++11使用nullptr關(guān)鍵字,是表達(dá)更準(zhǔn)確,類型安全的空指針

例1 指針的定義、賦值與使用

 1 //sample1.cpp
 2 
 3 #include <iostream>
 4 
 5 using namespace std;
 6 
 7 int main() {
 8 
 9   int i; //定義int型數(shù)i
10 
11   int *ptr = &i; //取i的地址賦給ptr
12 
13   i = 10; //int型數(shù)賦初值
14 
15   cout << "i = " << i << endl; //輸出int型數(shù)的值
16 
17   cout << "*ptr = " << *ptr << endl; //輸出int型指針?biāo)傅刂返膬?nèi)容
18 
19   return 0;
20 
21 }
22 
23 運(yùn)行結(jié)果:
24 
25 i = 10
26 
27 *ptr = 10

例2 void類型指針的使用

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main() {
 6 
 7 //!void voidObject; 錯(cuò),不能聲明void類型的變量
 8 
 9   void *pv; //對(duì),可以聲明void類型的指針
10 
11   int i = 5;
12 
13   pv = &i; //void類型指針指向整型變量
14 
15   int *pint = static_cast<int *>(pv); //void指針轉(zhuǎn)換為int指針
16 
17   cout << "*pint = " << *pint << endl;
18 
19   return 0;
20 
21 }

指向常量的指針

  • 不能通過指向常量的指針改變所指對(duì)象的值,但指針本身可以改變,可以指向另外的對(duì)象。

   int a;

  const int *p1 = &a; //p1是指向常量的指針

  int b;

  p1 = &b; //正確,p1本身的值可以改變

   *p1 = 1; //編譯時(shí)出錯(cuò),不能通過p1改變所指的對(duì)象

指針類型的常量

  • 若聲明指針常量,則指針本身的值不能被改變。

  int a;

  int * const p2 = &a;

 

  p2 = &b; //錯(cuò)誤,p2是指針常量,值不能改變

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多