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));
C语言基本教程(四)指针、布局、连系和列举(8)
最后更新 2017-11-04 08:00 星期六 所属:
C语言/C++ 教程 浏览:432
