首页 > 编程笔记 > C语言笔记 阅读:16

C语言指针数组的用法(附带实例)

C语言中的字符串数组有别于字符数组,字符数组是一个一维数组,而字符串数组是以字符串作为数组元素的数组,可以将其看成一个二维字符数组。

下面定义一个简单的字符串数组:
char country[5][20] =
{
    "China",
    "Japan",
    "Russia",
    "Germany",
    "Switzerland"
};
上述代码中,字符型数组变量 country 被定义为含有 5 个字符串的数组,每个字符串的长度都必须小于 20(这里要考虑字符串最后的“\0”)。

通过观察上面定义的字符串数组可以发现,像"China"和"Japan"这样的字符串的长度仅为 5,加上字符串结束符也仅为 6,而内存中却要给它们分别分配一个 20 字节的空间,空间浪费较大。

为了解决这个问题,可以使用指针数组,使每个指针指向所需要的字符常量。这种方法需要在数组中保存字符指针,虽然也占用空间,但要远少于字符串数组占用的空间。

什么是指针数组呢?一个数组,如果其元素均为指针类型数据,则该数组称为指针数组。也就是说,指针数组中的每一个元素都相当于一个指针变量。

一维指针数组的定义形式如下:
类型名 数组名[数组长度]
【实例】英语小测,有一题是根据汉语填写英语。语文、数学、英语、化学、生物、物理的英语分别为 Chinese、math、English、chemistry、biology 和 physics,用指针数组输出对应的英文。
#include<stdio.h>
int main()
{
    int i;
    char *test[] = {"Chinese",
                    "math",
                    "English",
                    "chemistry",
                    "biology",
                    "physics"}; /*定义一个指针数组,对其中的元素赋初值*/
    printf("答案是:\n");
    for(i = 0; i < 6; i++)
        printf("%s\n", test[i]); /*输出指针数组中的各元素*/
    return 0;
}
输出结果为:

答案是:
Chinese
math
English
chemistry
biology
physics

相关文章