指針
數據結構
指針的重要性:函數
表示一些複雜的數據結構(《數據結構》)spa
快速的傳遞數據(耗時短,消耗內存也小).net
使函數返回一個以上的值指針
能直接訪問硬件code
可以方便處理字符串對象
是理解面嚮對象語言中引用的基礎blog
總結:指針是C語言的靈魂內存
指針的定義:ci
地址:內存單元編號
從零開始的非負數
範圍:4G
cpu要對內存條進行控制的話,是經過三根線處理的,1控制線,2數據線,3地址線
對內存條讀仍是寫,是由控制線來控制的。
數據線進行數據的傳輸
地址線是爲了肯定是要對內存中的那些單元進行操做
問題來了,cpu是經過幾根地址總線,對內存進行管理
一根地址線,只有兩種狀態,0和1,能夠表示兩個單元的地址。
一根線能控制兩個內存單元,0是一個單元,1是一個單元。
兩根線能控制四個內存單元。00一個單元,01一個單元,10一個單元,11一個單元。
三根 2的3次方
。。。。。。
32位的機器,擁有32根地址總線,也就是說可以控制2的32次方個單元。2的30次方,是1g,再乘以4,就是4g,因此32位機器的地址空間是4g。
指針:
指針就是地址,地址就是指針。指針變量就是存放內存單元編號的變量,或者說指針變量就是存放地址的變量。
指針和指針變量是兩個不一樣的概念。
可是要注意:一般敘述時會把指針變量簡稱爲指針,實際他們不是一回事。
指針的本質就是一個操做受限的非負整數。指針是不能相加相乘相除的,由於沒有什麼意義,可是,能夠相減
小案例:
# include <stdio.h> int main(void) { int * p; /* p 是變量的名字,int * 表示p變量存放的是int類型的變量地址 int * p 不表示定義了一個名字叫作 * p的變量,這是錯誤的理解 int * p p是變量名,p變量的數據類型是int * 類型,實際上就是存放int變量地址的類型 */ int i = 5; p = &i; /* 1 p保存了i的地址,所以p指向i 2 p不是i,i也不是p,修改p的值不影響i的值,修改i的值也不影響p的值 3 若是一個指針變量指向了某個普通該變量, 那麼, *指針變量 就徹底等同於 普通變量 */ printf("%d \n",*p); return 0; }
學PHP的小螞蟻 博客 http://my.oschina.net/woshixiaomayi/blog