Tuesday, April 5, 2011

Initialization of Variables In C

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.
int     x       0;      /* "0" could be any constant */
       int     a       'a';
       char    flag    0177;
       int     *p      &y[1];  /* p now points to y[1] */
An external array can be initialized by following its name with a list of initializations enclosed in braces:
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
       };
This last one is very useful -- it makes 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:
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);
   }
Sorry -- neither local variables nor structures can be initialized.

0 comments:

Post a Comment

Breaking News
Loading...
Quick Message
Press Esc to close
Copyright © 2013 Crack o Hack & tweak STORE All Right Reserved