The C Programming Language(第 2 版) 笔记 / 5 指针与数组 / 5.8 指针数组的初始化

参考文献:The C Programming Language

目录


5.8 指针数组的初始化

考虑这样一个问题:编写一个函数 month_name(n),它返回一个指向第 n 个月名字的字符串的指针
这是内部 static 类型数组的一种理想的应用
month_name 函数中包含一个私有的字符串数组,当它被调用时,返回一个指向正确元素的指针
本节将说明如何初始化该名字数组

指针数组的初始化语法和前面所讲的其它类型对象的初始化语法类似:

/* month_name: return name of n-th month */ 
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]; 
}

其中,name 的声明与排序例子中 lineptr 的声明相同,是一个一维数组,数组的元素为字符指针
name 数组的初始化通过一个字符串列表实现,列表中的每个字符串赋值给数组相应位置的元素
i 个字符串的所有字符存储在存储器中的某个位置,指向它的指针存储在 name[i]
由于上述声明中没有指明 name 的长度,因此,编译器编译时将对初值个数进行统计,并将这一准确数字填入数组的长度


参考文献:The C Programming Language

目录

你可能感兴趣的:(The,C,Programming,Language,c语言)