home *** CD-ROM | disk | FTP | other *** search
- .NH
- Initialization of Variables
- .PP
- An external variable may be initialized at compile time
- by following its name with an initializing value
- when it is defined.
- The initializing value has to be something whose value is known at compile time,
- like a constant.
- .E1
- int x 0; /\** "0" could be any constant \**/
- int a 'a';
- char flag 0177;
- int \**p &y[1]; /\** p now points to y[1] \**/
- .E2
- An external array can be initialized by following its name with
- a list of initializations enclosed in braces:
- .E1
- int x[4] {0,1,2,3}; /\** makes x[i] = i \**/
- int y[ ] {0,1,2,3}; /\** makes y big enough for 4 values \**/
- char \**msg "syntax error\\n"; /\** braces unnecessary here \**/
- char \**keyword[ ]{
- "if",
- "else",
- "for",
- "while",
- "break",
- "continue",
- 0
- };
- .E2
- This last one is very useful _
- it makes
- .UL keyword
- an array of pointers to character strings,
- with a zero at the end so we can identify the
- last element easily.
- A simple lookup routine could scan this until
- it either finds a match or encounters a zero keyword pointer:
- .E1
- lookup(str) /\** search for str in keyword[ ] \**/
- char \**str; {
- int i,j,r;
- for( i=0; keyword[i] != 0; i\*+) {
- for( j=0; (r=keyword[i][j]) \*= str[j] && r != '\\0'; j\*+ );
- if( r \*= str[j] )
- return(i);
- }
- return(-1);
- }
- .E2
- .PP
- Sorry _
- neither local variables nor structures can be initialized.
-