🎁個人主頁:工藤新一1
🔍系列專欄:C++面向對象(類和對象篇)
🌟心中的天空之城,終會照亮我前方的路
🎉歡迎大家點贊👍評論📝收藏?文章
深入理解指針(2)
文章目錄
- 深入理解指針(2)
- 一、常量 const
- 1.1 const 修飾變量
- 1.2 const 修飾指針變量
- 二、野指針
- 2.1野指針的成因
- 2.2如何規避野指針
- 2.2.1指針的初始化
- 2.2.2小心指針越界
- 2.2.3指針及時置空,檢查有效性
- 2.2.4避免返回局部變量的地址
- 三、assert斷言
一、常量 const
1.1 const 修飾變量
- 在 C語言 中,被
const
修飾的變量是常變量(常變量,是變量,但具有常屬性 - 即不變的屬性) - 在 C++ 中,被
const
修飾的變量就是變量
因此,接下來讓我們通過對比來展示 C 語言 與 C++ 中迥異的地方
1.2 const 修飾指針變量
- 使用
const
約束指針的行為
二、野指針
概念:野指針
就是指針指向的位置是不可知的(隨機的、不正確的,沒有明確限制的)
2.1野指針的成因
- 指針未初始化
? 將 p
中的隨機值當作地址,在內存中隨機找了一塊空間(且這塊空間不屬于當前程序),存放數據 20
— 非法訪問內存空間
- 指針越界訪問
? p
指向不屬于自己的空間,并對這段空間進行了訪問操作 — 非法訪問內存空間
- 懸垂指針
? 指針指向的空間(如:局部屬性)被釋放,局部變量進入函數棧幀開始,走出函數棧幀銷毀、生命周期結束
總結:指針指向的內存空間不屬于當前程序,那么這個指針就是 野指針
2.2如何規避野指針
2.2.1指針的初始化
2.2.2小心指針越界
? 一個程序向內存申請了哪些空間,通過指針也就只能訪問哪些空間,不能超出范圍訪問,超出了就是越界訪問
2.2.3指針及時置空,檢查有效性
? 指針變量不在使用時,應及時置為 NULL
,指針使用之前檢查有效性。當指針變量指向?塊區域的時候,我們可以通過指針訪問該區域,后期不再使?這個指針訪問空間的 時候,我們可以把該指針置為 NULL
。因為約定俗成的?個規則就是:只要是 NULL指針
就不去訪問, 同時使?指針之前可以判斷指針是否為 NULL
2.2.4避免返回局部變量的地址
三、assert斷言
🌟 各位看官好,我是工藤新一1呀~
🌈 愿各位心中所想,終有所致!