一片搞定C語言難點--函數(shù)、指針、數(shù)組【指針篇上】//其他的不用仔細了解沒必要
有人問為什么要學C。
荒唐---P2P的磁力高速共享,Linux操作系統(tǒng)都是我們要征服的大海,打工做重復操作誰不會?
3.1 地址和指針
變量內(nèi)存空間分布

現(xiàn)在定義指針變量
&c:即取變量c的地址
就是取變量c的地址賦給p,p存放的是地址,這個地址值800,那么指針p就是指向變量c。
是對的,此時*p指向變量c,p才是指向&c,所以*p+1就是A的ASCII值加1,就是B。
3.2 定義
數(shù)組類型 *指針變量名
一定要初始化指針,否則會出現(xiàn)問題。
上面是一個absolute錯的寫法。要初始化,直接賦值NULL就行。
實例
結(jié)構(gòu)自己檢驗,我知道你們不會動手只看沒有用。!!!^^!!!
3.3 指針和數(shù)組 //二維來了,三維還遠嗎?
記住這里正規(guī)寫法:int *p 應(yīng)該寫成 int* p
指向數(shù)組的指針加減整數(shù)值,可以指向另一個數(shù)組元素。但不要超過數(shù)組范圍。
數(shù)組元素按順序存放
輸出方式
數(shù)組名不能++、--。a++就是不合法的。
*p++就相當于*(p++),先取p所指向的變量值,再p=p+1。
*++p就是先取p'=p+1,再取p'的值。
3.4 指針數(shù)組
類型 *數(shù)組名[數(shù)組長度]
相當于二級指針。比如*argv[]就是**argv。
二級指針&指針數(shù)組實例

!!! **pp 就是 *&a[0] , *&a[0] = a[0]。
i=0,**pp就是a[0],pp++,pp指向p[1],p[1]=&a[1],**pp = *&a[1],就是3。
記住一句話:二級指針不加*就是取一級指針的地址,加*再取一級指針的地址里的值,再加**就是取原地址(這里也是一級指針的地址里的值)里的值。
實例:奇偶數(shù)
[ ]優(yōu)先級高于*。
priority :() >> [] >> *
int (*p)[5] : 數(shù)組指針,指向含有5個元素的數(shù)組,就是指向一個有5個元素的行首地址,跨行操作,such as : a[0][] a[1][]。
int *p[5] : 指針數(shù)組,數(shù)組中每個元素指向一個整型變量,表示一維數(shù)組里存了5個指針變量,二維操作有很多:* (* (p+i)+j)、(* (p+i) )[j]、p[i][j]、 * (p[i]+j)。
?。?!注意
一維是線,a[5]? 有5個元素,a[0]a[1]a[2]a[3]a[4]
二維是面,a[3][4] 有3行4列,如下圖
