程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> C語言基礎教程(四)指針、結構、聯合和枚舉(8)

C語言基礎教程(四)指針、結構、聯合和枚舉(8)

編輯:C語言基礎知識
4.指針數組
因為指針是變量,因此可設想用指向同一數據類型的指針來構成一個數組,這就是指針數組。數組中的每個元素都是指針變量,根據數組的定義,指針數組中每個元素都為指向同一數據類型的指針。指針數組的定義格式為:
類型標識 *數組名[整型常量表達式];
例如:
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月名字的字符指針(關於函數,第6節將專門介紹)。
例2: 打印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));
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved