在電腦科學中,指標(pointer)是程式語言中的乙個物件,利用位址,它的值
直接指向(points to)存在電腦儲存器中另乙個地方的值。由於通過位址能找到
所需的變數單元,可以說,位址指向該變數單元。因此,將位址形象化的稱為「指標」。
意思是通過它能找到以它為位址的記憶體單元。
p是乙個指標,它實際上是乙個變數,而本質上p是乙個位址。在使用p時,真正使用的是p裡存放的位址,這個位址指向了一塊記憶體空間。
我們也可以畫圖來理解:
那麼如何建立乙個指標呢?
int a = 10;
//先在記憶體中開闢一塊四位元組的空間
int *p = &a;
//取出變數a的位址,存放在變數p中,p就是乙個指標變數,型別為int*
需要注意的是:在int *p1, p2
這種情況下,p1是乙個指標變數,而p2不是。
指標變數也有相應的型別:(type+ *)
char *pc = null; int * pi = null; short * ps = null; ......
char *型別的指標是為了存放char型別變數的位址
int *型別的指標是為了存放int型別變數的位址
…而不管是什麼型別的指標,它所佔空間大小是一樣的,因為它存放的都是位址,只要是位址,在32位平台就是4位元組,在64位平台就是8位元組。
指標的型別不同只決定了解引用時訪問的位元組數不同。例如:
char *
的指標解引用只能訪問乙個位元組,而int *
的指標解引用就能訪問4個位元組。
看**:
從執行結果可以看出,指標的型別決定了指標+1加幾個位元組。pc和pi列印的都是n的位址,而pc+1是增加1sizeof(char)1個位元組,pi+1是增加1sizeof(int)4個位元組.
c的位址存放在一級指標pa中,pa的位址存放在二級指標p中。
**p先通過 p找到pa,然後對pa進行解引用操作就找到了c.
從執行結果可以看出,p+1增加了1sizeof(char *)4個位元組。
C語言指標總結
2012 03 07 07 22 標籤 c語言 分類 pointer c語言中的精華是指標,這也是c語言中唯一的難點。c是對底層操作非常方便的語言,而底層操作中用到最多的就是指標,以後從事嵌入式開發的朋友們,指標將陪伴我們終身。1.指標型別分析 分析指標,可以從變數名處起,根據運算子優先順序結合,一...
C語言指標總結
c語言中的精華是指標,這也是c語言中唯一的難點。c是對底層操作非常方便的語言,而底層操作中用到最多的就是指標,以後從事嵌入式開發的朋友們,指標將陪伴我們終身。1.指標型別分析 分析指標,可以從變數名處起,根據運算子優先順序結合,一步一步分析.int p 這是乙個普通的整型變數 int p 首先從 p...
C語言指標總結
指標分析 指標的型別 把指標宣告語句裡的指標名字去掉,剩下的部分就是這個指標的型別 指標所指向的型別 把指標宣告語句中的指標名字和名字左邊的指標宣告符 去掉,剩下的就是指標所指向的型別 在指標的算術運算中,指標所指向的型別有很大的作用 指標本身所佔據的記憶體區 用函式sizeof 指標的型別 可以測...