Initialization of Pointer Arrays [static에 관한 좋은 내용임]
Consider the problem of writing a function month_name(n), which returns a pointer to a character string containing the name of the n-th month. This is an ideal application for an internal static array. month_name contains a private array of character strings, and returns a pointer to the proper one when called. This section shows how that array of names is initialized.
The syntax is similar to previous initializations:
/* 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 ] ; }
The declaration of name is an array of character pointers. The initializer is a list of character strings; each is assigned to the corresponding position in the array. The characters of the i-th string are placed somewhere, and a pointer to them is stored in name[ i ]. Since the size of the array name is not specified, the compiler counts the initializers and fills in the correct number.
[The C Programming Language p.113]