C 指標 總結

2021-08-26 03:28:21 字數 1191 閱讀 9243

對指標的一些總結

計算機記憶體中的每個位置都由乙個位址標識。通常,鄰近的記憶體位置合成一組,這樣就允許儲存更大範圍的值。指標就是他的值表示記憶體位址的變數。

無論是程式設計師還是計算機都無法通過值的位模式來判斷它的型別。型別是通過值的使用方法隱式地確定的。編譯器能夠保證值的宣告和值的使用之間的關係是適當的,從而幫助我們確定值的型別。

指標變數的值並非它所指向的記憶體位置所儲存的值。我們必須使用間接訪問來獲得它所指向位置儲存的值。對乙個"指向整型的指標"施加間接訪問操作的結果將是乙個整型值。

宣告乙個指標變數並不會自動分配任何記憶體。對未初始化的指標變數執行間接訪問操作是非法的,而且這種錯誤常常難以檢測。其結果常常是乙個不相關的值被修改。這種錯誤是很難被除錯發現的。

null指標就是不指向任何東西的指標。它可以賦值給乙個指標,用於表示那個指標並不指向任何值。對null指標執行間接訪問操作的後果因編譯器而異,兩個常見的後果分別是返回記憶體位置零的值以及終止程式。

和任何其他變數一樣,指標變數也可以作為左值使用。對指標執行間接訪問操作所產生的值也是個左值,因為這種表示式標識了乙個特定的記憶體位置。

除了null指標之外,再也沒有任何內建的記法來表示指標常量,因為程式設計師通常無法**編譯器會把變數放在記憶體中的什麼位置。在極少見的情況下,我們偶爾需要使用指標常量,這時我們可以通過減去乙個整型值。在這兩種情況下,這個整型值會進行調整,原值江乘以指標目標型別的長度。這樣,對乙個指標加1將使它指向下乙個變數,至於該變數在記憶體中佔幾個位元組的大小則於此無關。

然而,指標運算只有作用於陣列中其結果才是可以**的。對任何並非指向陣列元素的指標執行算術運算是非法的(但常常很難被檢測到)。如果乙個指標減去乙個整數後,運算結果產生的指標所指向的位置在陣列第乙個元素之前,那麼它也是非法的。假髮運算稍有不同,如果結果指標指向陣列最後乙個元素後面的那個記憶體位置仍是合法(但不能對這個指標指向間接訪問操作),不過再往後就不合法了。

如果兩個指標都指向同乙個陣列中的元素,那麼它們之間可以相減。指標減法的結果經過調整(除以陣列元素型別的長度),表示兩個指標在陣列中相隔多少個元素。如果兩個指標並不是指向同乙個陣列的元素,那麼它們之間進行相減就是錯誤的。

任何指標之間都可以進行比較,測試它們相等或不相等。如果兩個指標都指向同乙個陣列中的元素,那麼它們之間還可以執行<、<=、>和》=等關係運算,用於判斷它們在陣列中的相對位置。對兩個不相關的指標執行關係運算,其結果是未定義的。

C 指標總結

指標定義和基本操作 指標是記憶體的乙個位址。定義格式,型別名 指標變數名 其中指標變數名指的是記憶體位址,加 是表示指向這一記憶體位址所儲存的內容,如果要取位址的話就要用 來處理,比如 指標變數名 或 指標變數名,如果指標暫時不用的時候,可以賦給乙個空指標 null。統配指標型別void void ...

C 指標總結

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!指標是一變數或函式的記憶體位址,是乙個無符號整數,它是以系統定址範圍為取值範圍,32位,4位元組。存放位址的變數。在c 中,指標變數只有有了明確的指向才有意義。int ptr 指向int型別的指標變數 char ptr float ptr char...

c 指標總結

int p 乙個普通的整型型別 int p 先看p和 結合,說明p是乙個指標,然後再與int結合,說明指標指向的內容是整型型別。所以p是乙個指向整型型別的指標。int p 3 先看p與結合,說明p是乙個陣列,然後再與int結合,說明陣列中元素的型別是整型。所以p是乙個由整型型別元素組成的陣列。int...