四、指針數組
因為指針是變量,因此可設想用指向同一數據類型的指針來構成一個數組, 這就是指針數組。數組中的每個元素都是指針變量,根據數組的定義,指針數組中每個元素都為指向同一數據類型的指針。指針數組的定義格式為:
類型標識 *數組名[整型常量表達式];
例如:
int *a[10];
定義了一個指針數組,數組中的每個元素都是指向整型量的指針,該數組由10個元素組成,即a[0],a[1],a[2], ..., a[9],它們均為指針變量。a為該指針數組名,和數組一樣,a是常量,不能對它進行增量運算。a為指針數組元素a[0]的地址,a+i為a[i]的地址,*a就是a[0],*(a+i)就是a[i]。
為什么要定義和使用指針數組呢?主要是由于指針數組對處理字符串提供了更大的方便和靈活,使用二維數組對處理長度不等的正文效率低,而指針數組由于其中每個元素都為指針變量,因此通過地址運算來操作正文行是十分方便的。
指針數組和一般數組一樣,允許指針數組在定義時初始化,但由于指針數組的每個元素是指針變量,它只能存放地址,所以對指向字符串的指針數組在說明賦初值時,是把存放字符串的首地址賦給指針數組的對應元素,
例如下面是一個書寫函數month_name(n),函數返回一個指向包含第n月名字的字符指針(關于函數指針和指針函數,下一節(jié)將專門介紹)。
例: 打印1月至12月的月名:
char *month_name(int n)
{
static char *name[]={
Illegal month,
January,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December
};
return((n<1||n>12)?name[0]:name[n]);
}
main()
{
int i;
for(i=0; i<13; i++)
printf(%s\n, month_name(i));
}
對于指針這一節(jié),一定要多練習一些題。指針是一個很重要的概念,必須多接觸實際的問題才能掌握它。
相關推薦:計算機等級考試二級C語言教程匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |