4.指針數(shù)組
因為指針是變量,因此可設想用指向同一數(shù)據(jù)類型的指針來構成一個數(shù)組,這就是指針數(shù)組。數(shù)組中的每個元素都是指針變量,根據(jù)數(shù)組的定義,指針數(shù)組中每個元素都為指向同一數(shù)據(jù)類型的指針。指針數(shù)組的定義格式為:
類型標識 *數(shù)組名[整型常量表達式];
例如:
int *a[10];
定義了一個指針數(shù)組,數(shù)組中的每個元素都是指向整型量的指針,該數(shù)組由10個元素組成,即a[0],a[1],a[2], ...,a[9],它們均為指針變量。a為該指針數(shù)組名,和數(shù)組一樣,a是常量,不能對它進行增量運算。a為指針數(shù)組元素a[0]的地址,a+i為a[i]的地址,*a就是a[0],*(a+i)就是a[i]。
為什么要定義和使用指針數(shù)組呢?主要是由于指針數(shù)組對處理字符串提供了更大的方便和靈活,使用二維數(shù)組對處理長度不等的正文效率低,而指針數(shù)組由于其中每個元素都為指針變量,因此通過地址運算來操作正文行是十分方便的。
指針數(shù)組和一般數(shù)組一樣,允許指針數(shù)組在定義時初始化,但由于指針數(shù)組的每個元素是指針變量,它只能存放地址,所以對指向字符串的指針數(shù)組在說明賦初值時,是把存放字符串的首地址賦給指針數(shù)組的對應元素,例如下面是一個書寫函數(shù)month_name(n),此函數(shù)返回一個指向包含第n月名字的字符指針(關于函數(shù),第6節(jié)將專門介紹)。
例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));
2、結構(struct)
結構是由基本數(shù)據(jù)類型構成的、并用一個標識符來命名的各種變量的組合。結構中可以使用不同的數(shù)據(jù)類型。
1.結構說明和結構變量定義
在Turbo C中,結構也是一種數(shù)據(jù)類型,可以使用結構變量,因此,象其它類型的變量一樣,在使用結構變量時要先對其定義。
定義結構變量的一般格式為:
struct 結構名
{
類型 變量名;
類型 變量名;
...
} 結構變量;
結構名是結構的標識符不是變量名。
類型為第二節(jié)中所講述的五種數(shù)據(jù)類型(整型、浮點型、字符型、指針型和無值型)。
構成結構的每一個類型變量稱為結構成員,它象數(shù)組的元素一樣,但數(shù)組中元素是以下標來訪問的,而結構是按變量名字來訪問成員的。
下面舉一個例子來說明怎樣定義結構變量。
struct string
{
char name[8];
int age;
char sex[2];
char depart[20];
float wage1, wage2, wage3, wage4, wage5;
} person;
這個例子定義了一個結構名為string的結構變量person,如果省略變量名person,則變成對結構的說明。用已說明的結構名也可定義結構變量。這樣定義時上例變成:
struct string
{
char name[8];
int age;
char sex[2];
char depart[20];
float wage1, wage2, wage3, wage4, wage5;
};
struct string person;
如果需要定義多個具有相同形式的結構變量時用這種方法比較方便,它先作結構說明,再用結構名來定義變量。
例如:
struct string Tianyr, Liuqi, ...;
如果省略結構名,則稱之為無名結構,這種情況常常出現(xiàn)在函數(shù)內部,用這種結構時前面的例子變成:
struct
{
char name[8];
int age;
char sex[2];
char depart[20];
float wage1, wage2, wage3, wage4, wage5;
} Tianyr, Liuqi;
相關推薦:計算機等考二級C語言備考:C語言/C++編譯過程北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |