main(){
static char *ps[]={ "BASIC","DBASE","C","FORTRAN",
"PASCAL"};
char **pps;
int i;
for(i=0;i<5;i++){
pps=ps+i;
printf("%s\n",*pps);
}
}
本程序是用指向指針的指針變量編程,輸出多個(gè)字符串。
本章小結(jié)
1. 指針是C語言中一個(gè)重要的組成部分,使用指針編程有以下優(yōu)點(diǎn):
(1)提高程序的編譯效率和執(zhí)行速度。
(2)通過指針可使用主調(diào)函數(shù)和被調(diào)函數(shù)之間共享變量或數(shù)據(jù)結(jié)構(gòu),便于實(shí)現(xiàn)雙向數(shù)據(jù)通訊。
(3)可以實(shí)現(xiàn)動態(tài)的存儲分配。
(4)便于表示各種數(shù)據(jù)結(jié)構(gòu),編寫高質(zhì)量的程序。
2. 指針的運(yùn)算
(1)取地址運(yùn)算符&:求變量的地址
(2)取內(nèi)容運(yùn)算符*:表示指針?biāo)傅淖兞?/P>
(3)賦值運(yùn)算
·把變量地址賦予指針變量
·同類型指針變量相互賦值
·把數(shù)組,字符串的首地址賦予指針變量
·把函數(shù)入口地址賦予指針變量
(4)加減運(yùn)算
對指向數(shù)組,字符串的指針變量可以進(jìn)行加減運(yùn)算,如p+n,p-n,p++,p--等。對指向同一數(shù)組的兩個(gè)指針變量可以相減。對指向其它類型的指針變量作加減運(yùn)算是無意義的。
(5)關(guān)系運(yùn)算
指向同一數(shù)組的兩個(gè)指針變量之間可以進(jìn)行大于、小于、 等于比較運(yùn)算。指針可與0比較,p==0表示p為空指針。
3. 與指針有關(guān)的各種說明和意義見下表。
int *p; p為指向整型量的指針變量
int *p[n]; p為指針數(shù)組,由n個(gè)指向整型量的指針元素組成。
int (*p)[n]; p為指向整型二維數(shù)組的指針變量,二維數(shù)組的列數(shù)為n
int *p() p為返回指針值的函數(shù),該指針指向整型量
int (*p)() p為指向函數(shù)的指針,該函數(shù)返回整型量
int **p p為一個(gè)指向另一指針的指針變量,該指針指向一個(gè)整型量。
4. 有關(guān)指針的說明很多是由指針,數(shù)組,函數(shù)說明組合而成的。
但并不是可以任意組合,例如數(shù)組不能由函數(shù)組成,即數(shù)組元素不能是一個(gè)函數(shù);函數(shù)也不能返回一個(gè)數(shù)組或返回另一個(gè)函數(shù)。例如
int a[5]();就是錯(cuò)誤的。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |