⑤把字符串的首地址賦予指向字符類型的指針變量。例如: char *pc;pc="c language";或用初始化賦值的方法寫為: char *pc="C Language"; 這里應(yīng)說明的是并不是把整個字符串裝入指針變量, 而是把存放該字符串的字符數(shù)組的首地址裝入指針變量。 在后面還將詳細(xì)介紹。
⑥把函數(shù)的入口地址賦予指向函數(shù)的指針變量。例如: int (*pf)();pf=f; /*f為函數(shù)名*/
(2)加減算術(shù)運(yùn)算
對于指向數(shù)組的指針變量,可以加上或減去一個整數(shù)n。設(shè)pa是指向數(shù)組a的指針變量,則pa+n,pa-n,pa++,++pa,pa--,--pa 運(yùn)算都是合法的。指針變量加或減一個整數(shù)n的意義是把指針指向的當(dāng)前位置(指向某數(shù)組元素)向前或向后移動n個位置。應(yīng)該注意,數(shù)組指針變量向前或向后移動一個位置和地址加1或減1 在概念上是不同的。因?yàn)閿?shù)組可以有不同的類型, 各種類型的數(shù)組元素所占的字節(jié)長度是不同的。如指針變量加1,即向后移動1 個位置表示指針變量指向下一個數(shù)據(jù)元素的首地址。而不是在原地址基礎(chǔ)上加1。
例如:
int a[5],*pa;
pa=a; /*pa指向數(shù)組a,也是指向a[0]*/
pa=pa+2; /*pa指向a[2],即pa的值為&pa[2]*/ 指針變量的加減運(yùn)算只能對數(shù)組指針變量進(jìn)行, 對指向其它類型變量的指針變量作加減運(yùn)算是毫無意義的。(3)兩個指針變量之間的運(yùn)算只有指向同一數(shù)組的兩個指針變量之間才能進(jìn)行運(yùn)算, 否則運(yùn)算毫無意義。
、賰芍羔樧兞肯鄿p
兩指針變量相減所得之差是兩個指針?biāo)笖?shù)組元素之間相差的元素個數(shù)。實(shí)際上是兩個指針值(地址) 相減之差再除以該數(shù)組元素的長度(字節(jié)數(shù))。例如pf1和pf2 是指向同一浮點(diǎn)數(shù)組的兩個指針變量,設(shè)pf1的值為2010H,pf2的值為2000H,而浮點(diǎn)數(shù)組每個元素占4個字節(jié),所以pf1-pf2的結(jié)果為(2000H-2010H)/4=4,表示pf1和 pf2之間相差4個元素。兩個指針變量不能進(jìn)行加法運(yùn)算。 例如, pf1+pf2是什么意思呢?毫無實(shí)際意義。
、趦芍羔樧兞窟M(jìn)行關(guān)系運(yùn)算
指向同一數(shù)組的兩指針變量進(jìn)行關(guān)系運(yùn)算可表示它們所指數(shù)組元素之間的關(guān)系。例如:
pf1==pf2表示pf1和pf2指向同一數(shù)組元素
pf1>pf2表示pf1處于高地址位置
pf1
main(){
int a=10,b=20,s,t,*pa,*pb;
pa=&a;
pb=&b;
s=*pa+*pb;
t=*pa**pb;
printf("a=%d\nb=%d\na+b=%d\na*b=%d\n",a,b,a+b,a*b);
printf("s=%d\nt=%d\n",s,t);
}
......
說明pa,pb為整型指針變量
給指針變量pa賦值,pa指向變量a。
給指針變量pb賦值,pb指向變量b。
本行的意義是求a+b之和,(*pa就是a,*pb就是b)。
本行是求a*b之積。
輸出結(jié)果。
輸出結(jié)果。
......
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |