c++指針 圖

c++ *號和&都是取地址符號,&類似get;*類似set方法,但*號還有更重要的意義,首先*是計算機允許開闢最大類型Bit數(這個內存中用於存放地址,如果內存容不下地址Bit數,就相當於double轉float,地址出問題程序就是崩)。*代表計算機的最小單位BIt,我們使用時加上*聲明的類或變量統稱“某類型”指針;某類型”也就代表需要開闢多少Bit數內存。比如char類型1個字節就是8Bit(0000 0000或1111 1111之間)超出這個2進制大小Bit數就會出問題,那麼char* ptr的ptr就是指針,所指向的內存數據每8Bit爲一塊(可以指一塊或多塊)也就是ptr尋址的間距,8Bit數生成一個地址*ptr++實際是前進8Bit數‘類型大小的距離),不然類型不統一尋址也無規則,那麼內存錯亂程序也無法跑通。如果是類聲明的指針,會開闢類中存在所有類型按塊排列後變成一個新類型,每個新類型塊Bit數相同,也會按固定類內存塊大小排列分配一個地址。

重點:1.創建指針就是當前類型指針首地址與下一個類型首地址的距離(Bit數);

           2.指針建議先賦值NULL,再初始化後賦值;

           3.指針初始化後對應需要刪除。

示例代碼

                                                                                                                                                        2019.8.29 更新心得

下圖從內存使用與分配結構剖析指針與多級指針運行原理:

 

 

自己寫個demo測試比對此圖領悟更快。

 下面倆幅圖簡單測試指針開闢內存後編譯器會與普通類型對待。

 上圖可以看見&a是get地址,賦值給*ptr_a失敗。

 

 上圖可以把*ptr_a理解成int類型的變量,由此可見(int *)這是完整的指針類型。

指針進階

指針引用 

指針精髓

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章