【C 语言】数组与指针操作 ( 数组符号 [] 与 指针 * 符号 的 联系 与 区别 | 数组符号 [] 与 指针 * 符号 使用效果 基本等价 | 数组首地址 与 指针 本质区别 )
文章目錄
- 前言
- 一、數(shù)組符號 [] 與 指針 * 符號 使用效果 基本等價
- 二、數(shù)組首地址 與 指針 本質區(qū)別
前言
參考 【C 語言】指針 與 數(shù)組 ( 指針 | 數(shù)組 | 指針運算 | 數(shù)組訪問方式 | 字符串 | 指針數(shù)組 | 數(shù)組指針 | 多維數(shù)組 | 多維指針 | 數(shù)組參數(shù) | 函數(shù)指針 | 復雜指針解讀) 博客 , 進行理解 ;
一、數(shù)組符號 [] 與 指針 * 符號 使用效果 基本等價
在上一篇博客 【C 語言】字符串操作 ( 使用 數(shù)組下標 操作字符串 | 使用 char * 指針 操作字符串 ) 中 , 使用 數(shù)組符號 [] 與 指針 * 操作 都可以實現(xiàn) 字符串訪問 , 因此 這兩種操作是有某種聯(lián)系的 ;
數(shù)組符號 [] 與 指針 * 符號操作 , 兩種表示方式是等價的 ;
數(shù)組符號 [] 本質 : p[i] 表示方式 與 *(p + i) 表示方式是等價的 ;
- p[i] 方式更加符合 人類的 認知閱讀習慣 ;
- *(p + i) 方式 更加符合 編譯器 的 尋址機制 ;
從 數(shù)組符號 [] 到 指針 * 符號 的推演 : p[i] 可以理解為 p[0 + i] , p[0 + i] 將 p 指針變量可以放在下標中 , p + i 表示第 i 個元素的地址 , *(p + i) 表示第 i 個元素的值 ;
二、數(shù)組首地址 與 指針 本質區(qū)別
編譯器 一旦遇到 數(shù)組定義 , 如
int array[10];這個 array 可以看做一個指針 , 而且是常量指針 , 該指針不能改變 指向 ;
數(shù)組首地址 array 的值 是不可以改變的 ;
普通的指針 , 是可以改變其指向的 ;
數(shù)組 聲明后 是一個 棧內存 變量 , 在函數(shù)生命周期結束后 , 該變量還需要進行 回收 , 回收的 依據(jù)是 數(shù)組的首地址 ;
如果在使用 數(shù)組 的過程中 , 修改了 數(shù)組 首地址值 , 就會造成 無法回收內存 ;
這是為了保證 棧內存 中 局部變量 內存 的 安全性 , 使 數(shù)組 首地址 無法進行修改 , 是一個常量指針 ;
總結
以上是生活随笔為你收集整理的【C 语言】数组与指针操作 ( 数组符号 [] 与 指针 * 符号 的 联系 与 区别 | 数组符号 [] 与 指针 * 符号 使用效果 基本等价 | 数组首地址 与 指针 本质区别 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C 语言】字符串操作 ( 使用 数组下
- 下一篇: 【C 语言】字符串 一级指针 内存模型