C語言修煉之路初識(shí)指針陰陽竅?地址還歸大道真下篇
(壹) 行經(jīng)旅途遇猛虎 -- “野指針”
概念:野指針就是指針指向的位置是不可知的(隨機(jī)的、不正確的、沒有明確限制的)指針變量在定義時(shí)如果未初始化,其值是隨機(jī)的,指針變量的值是別的變量的地址,意味著指針指向了一個(gè)地址是不確定的變量,此時(shí)去解引用就是去訪問了一個(gè)不確定的地址,所以結(jié)果是不可知的.
1.1 野指針成因
1.指針未初始化
2.指針越界訪問
3. 指針指向的空間釋放
這部分的內(nèi)容將會(huì)在動(dòng)態(tài)內(nèi)存開辟的時(shí)候講解,這里可以簡單提示一下。
1.2 巧法規(guī)避野指針
- 指針初始化 (不知指向哪里時(shí),應(yīng)該初始化為NULL)
- 小心指針越界
- 指針指向空間釋放即使置NULL
- 指針使用之前檢查有效性
(貳) 指針之運(yùn)算
2.1 指針 +- 整數(shù)
2.2 指針-指針
判斷一下下面的代碼結(jié)果是什么?
最后得到的是兩個(gè)指針間元素的個(gè)數(shù)
課堂小補(bǔ)充 (利用指針 - 指針 實(shí)現(xiàn) strlen)
(叁) 指針和數(shù)組
3.1 數(shù)組名
數(shù)組名是什么?我們看一個(gè)例子
可見數(shù)組名和數(shù)組首元素的地址是一樣的。
結(jié)論:數(shù)組名表示的是數(shù)組首元素的地址。
那么這樣寫代碼是可行的:
既然可以把數(shù)組名當(dāng)成地址存放到一個(gè)指針中,我們使用指針來訪問一個(gè)就成為可能。
例如:
所以p+i其實(shí)計(jì)算的是數(shù)組arr下標(biāo)為i的地址。
那我們就可以直接通過指針來訪問數(shù)組。
如下:
3.2 二級(jí)指針
指針變量也是變量,是變量就有地址,那指針變量的地址存放在哪里? 這就是二級(jí)指針。
3.3 指針數(shù)組
指針數(shù)組是指針還是數(shù)組?
答案:是數(shù)組。是存放指針的數(shù)組。
數(shù)組我們已經(jīng)知道整形數(shù)組,字符數(shù)組。
那指針數(shù)組是怎樣的?
到此這篇關(guān)于C語言修煉之路初識(shí)指針陰陽竅 地址還歸大道真下篇的文章就介紹到這了,更多相關(guān)C語言 指針內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言與C++動(dòng)態(tài)通訊錄超詳細(xì)實(shí)現(xiàn)流程
這篇文章主要為大家介紹了C語言與C++動(dòng)態(tài)實(shí)現(xiàn)通訊錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-05-05從匯編看c++中函數(shù)里面的static關(guān)鍵字的使用說明
c++中的static關(guān)鍵字使得函數(shù)里面的局部變量的存活期不在局限于函數(shù)里面,而是變?yōu)樵谡麄€(gè)程序生命期里面都有效2013-05-05OpenCV實(shí)現(xiàn)相機(jī)標(biāo)定板
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)相機(jī)標(biāo)定板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04C語言數(shù)據(jù)結(jié)構(gòu)與算法之圖的遍歷(二)
這篇文章主要是介紹了利用廣度優(yōu)先算法實(shí)現(xiàn)圖的遍歷,文中利用圖文詳細(xì)的介紹了實(shí)現(xiàn)步驟,對(duì)我們學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法有一定的幫助,需要的朋友可以參考一下2021-12-12C++中關(guān)于std::queue?中遇到釋放內(nèi)存錯(cuò)誤的問題
這篇文章主要介紹了std::queue中遇到釋放內(nèi)存錯(cuò)誤的問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07