C語言修煉之路初識指針陰陽竅 地址還歸大道真下篇
(壹) 行經旅途遇猛虎 — “野指針”
概念:野指針就是指針指向的位置是不可知的(隨機的、不正確的、沒有明確限制的)指針變量在定義時如果未初始化,其值是隨機的,指針變量的值是別的變量的地址,意味著指針指向瞭一個地址是不確定的變量,此時去解引用就是去訪問瞭一個不確定的地址,所以結果是不可知的.
1.1 野指針成因
1.指針未初始化
2.指針越界訪問
3. 指針指向的空間釋放
這部分的內容將會在動態內存開辟的時候講解,這裡可以簡單提示一下。
1.2 巧法規避野指針
指針初始化 (不知指向哪裡時,應該初始化為NULL)小心指針越界指針指向空間釋放即使置NULL 指針使用之前檢查有效性
(貳) 指針之運算
2.1 指針 +- 整數
2.2 指針-指針
判斷一下下面的代碼結果是什麼?
最後得到的是兩個指針間元素的個數
課堂小補充 (利用指針 – 指針 實現 strlen)
(叁) 指針和數組
3.1 數組名
數組名是什麼?我們看一個例子
可見數組名和數組首元素的地址是一樣的。
結論:數組名表示的是數組首元素的地址。
那麼這樣寫代碼是可行的:
既然可以把數組名當成地址存放到一個指針中,我們使用指針來訪問一個就成為可能。
例如:
所以p+i其實計算的是數組arr下標為i的地址。
那我們就可以直接通過指針來訪問數組。
如下:
3.2 二級指針
指針變量也是變量,是變量就有地址,那指針變量的地址存放在哪裡? 這就是二級指針。
3.3 指針數組
指針數組是指針還是數組?
答案:是數組。是存放指針的數組。
數組我們已經知道整形數組,字符數組。
那指針數組是怎樣的?
到此這篇關於C語言修煉之路初識指針陰陽竅 地址還歸大道真下篇的文章就介紹到這瞭,更多相關C語言 指針內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- strlen函數的使用與模擬實現strlen的方法
- 關於C語言strlen與sizeof區別詳情
- 仿寫C語言string.h頭文件檢驗字符串函數
- C++中獲取字符串長度的函數sizeof()、strlen()、length()、size()詳解和區別(推薦)
- C語言中關於計算字符串長度的幾種方式