1. 程式人生 > >C語言基礎指標概念

C語言基礎指標概念

本文全是來自網路

指標的概念:

  指標是一個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的一個地址

  指標需要明白四個方面:指標的型別,指標所有指向的型別,指標的值或者指標所指向的記憶體區,還有指標本身所佔據的記憶體區

  1:指標的型別:

      從語法的角度看,

從語法的角度看,你只要把指標宣告語句裡的指標名字去掉,剩下的部分就是這個指標的型別。這是指標本身所具有的型別。讓我們看看例一中各個指標的型別:

  2指標所指向的型別
當你通過指標來訪問指標所指向的記憶體區時,指標所指向的型別決定了編譯器將把那片記憶體區裡的內容當做什麼來看待。
從語法上看,你只須把指標宣告語句中的指標名字和名字左邊的指標宣告符 *去掉,剩下的就是指標所指向的型別。例

  3 指標的值
     指標的值,或者叫指標所指向的記憶體區或地址。 指標的值是指標本身儲存的數值,這個值將被編譯器當作一個地址,而不是一個一般的數值。在32位程式裡,所有型別的指標的值都是一個32位整數,因為32位程式裡記憶體地址全都是32位長。
指標所指向的記憶體區就是從指標的值所代表的那個記憶體地址開始,長度為sizeof(指標所指向的型別)的一片記憶體區。以後,我們說一個指標的值是XX,就 相當於說該指標指向了以XX為首地址的一片記憶體區域;我們說一個指標指向了某塊記憶體區域,就相當於說該指標的值是這塊記憶體區域的首地址。
指標所指向的記憶體區和指標所指向的型別是兩個完全不同的概念。在例一中,指標所指向的型別已經有了,但由於指標還未初始化,所以它所指向的記憶體區是不存在的,或者說是無意義的

4 指標本身所佔據的記憶體區。 
  指標本身佔了多大的記憶體?你只要用函式sizeof(指標的型別)測一下就知道了。在32位平臺裡,指標本身佔據了4個位元組的長度。
指標本身佔據的記憶體這個概念在判斷一個指標表示式是否是左值時很有用。