Annotation of coherent/a/usr/man/ALL/initialization, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: initialization              Definition             initialization
                      4: 
                      5: 
                      6: 
                      7: 
                      8: The  term initialization  refers  to setting  a  variable to  its
                      9: first, or initial, value.
                     10: 
                     11: ***** Rules of Initialization *****
                     12: 
                     13: Initializers follow the same  rules for type and conversion as do
                     14: assignment statements.
                     15: 
                     16: If  a static  object with  a  scalar type  is not  explicitly in-
                     17: itialized, it is initialized  to zero by default.  Likewise, if a
                     18: static pointer  is not explicitly initialized,  it is initialized
                     19: to NULL by default.  If an object with automatic storage duration
                     20: is not explicitly initialized, its contents are indeterminate.
                     21: 
                     22: Initializers  on  static objects  must  be constant  expressions;
                     23: greater  flexibility  is allowed  for  initializers of  automatic
                     24: variables.   These latter initializers  can be  arbitrary expres-
                     25: sions, not just constant expressions.  For example,
                     26: 
                     27: 
                     28:         double dsin = sin(30.0);
                     29: 
                     30: 
                     31: is a valid initializer, where dsin is declared inside a function.
                     32: 
                     33: To initialize  an object, use  the assignment operator  `='.  The
                     34: following sections  describe how to  initialize different classes
                     35: of objects.
                     36: 
                     37: ***** Scalars *****
                     38: 
                     39: To initialize  a scalar object, assign it the  value of a expres-
                     40: sion.   The expression  may be enclosed  within braces;  doing so
                     41: does not  affect the value  of the assignment.   For example, the
                     42: expressions
                     43: 
                     44: 
                     45:         int example = 7+12;
                     46: 
                     47: 
                     48: and
                     49: 
                     50: 
                     51:         int example = { 7+12 };
                     52: 
                     53: 
                     54: are equivalent.
                     55: 
                     56: ***** Unions and Structures *****
                     57: 
                     58: The initialization of a  union by definition fills only its first
                     59: member.
                     60: 
                     61: 
                     62: 
                     63: 
                     64: COHERENT Lexicon                                           Page 1
                     65: 
                     66: 
                     67: 
                     68: 
                     69: initialization              Definition             initialization
                     70: 
                     71: 
                     72: 
                     73: To initialize a union,  use an expression that is enclosed within
                     74: braces:
                     75: 
                     76: 
                     77:         union example_u {
                     78:                 int member1;
                     79:                 long member2;
                     80:                 float member3;
                     81:         } = { 5 };
                     82: 
                     83: 
                     84: This initializes  member1 to five.  That is to  say, the union is
                     85: filled with an iinntt-sized object whose value is five.
                     86: 
                     87: To initialize a structure, use a list of constants or expressions
                     88: that are enclosed within braces.  For example:
                     89: 
                     90: 
                     91:         struct example_s {
                     92:                 int member1;
                     93:                 long member2;
                     94:                 union example_u member3;
                     95:         };
                     96: 
                     97: 
                     98: 
                     99:         struct example_s test1 = { 5, 3, 15 };
                    100: 
                    101: 
                    102: This initializes  member1 to five, initializes  member2 to three,
                    103: and initializes the first member of member3 to 15.
                    104: 
                    105: ***** Strings and Wide Characters *****
                    106: 
                    107: To initialize  a string pointer  or an array  of wide characters,
                    108: use a string literal.
                    109: 
                    110: The following initializes a string:
                    111: 
                    112: 
                    113:         char string[] = "This is a string";
                    114: 
                    115: 
                    116: The length of the character array is 17 characters: one for every
                    117: character  in the  given  string literal  plus one  for the  null
                    118: character that marks the end of the string.
                    119: 
                    120: If you  wish, you can  fix the length  of a character  array.  In
                    121: this  case, the  null character  is  appended to  the end  of the
                    122: string  only if  there is  room in the  array.  For  example, the
                    123: following
                    124: 
                    125: 
                    126: 
                    127: 
                    128: 
                    129: 
                    130: COHERENT Lexicon                                           Page 2
                    131: 
                    132: 
                    133: 
                    134: 
                    135: initialization              Definition             initialization
                    136: 
                    137: 
                    138: 
                    139:         char string[16] = "This is a string";
                    140: 
                    141: 
                    142: writes the  text into the array string, but  does not include the
                    143: concluding null  character because there  is not enough  room for
                    144: it.
                    145: 
                    146: A pointer  to char  can also be  initialized when the  pointer is
                    147: declared.  For example:
                    148: 
                    149: 
                    150:         char *strptr = "This is a string";
                    151: 
                    152: 
                    153: initializes strptr  to point to the first character  in This is a
                    154: string.  This declaration  automatically allocates exactly enough
                    155: storage to  hold the given  string literal, plus  the terminating
                    156: null character.
                    157: 
                    158: ***** Arrays *****
                    159: 
                    160: To  initialize  an  array, use  a  list  of  expressions that  is
                    161: enclosed within braces.  For example, the expression
                    162: 
                    163: 
                    164:         int array[] = { 1, 2, 3 };
                    165: 
                    166: 
                    167: initializes array.  Because array does not have a declared number
                    168: of elements,  the initialization fixes its  number of elements at
                    169: three.  The elements of the array are initialized in the order in
                    170: which the  elements of the  initialization list appear.   For ex-
                    171: ample, array[0]  is initialized to one, array[1]  to two, and ar-
                    172: ray[2] to three.
                    173: 
                    174: If an  array has a fixed length and  the initialization list does
                    175: not contain enough initializers to initialize every element, then
                    176: the  remaining elements  are initialized  in the  default manner:
                    177: static variables are  initialized to zero, and other variables to
                    178: whatever happens to be in memory.  For example, the following:
                    179: 
                    180: 
                    181:         int array[3] = { 1, 2 };
                    182: 
                    183: 
                    184: initializes  array[0] to  one, array[1] to  two, and  array[2] to
                    185: zero.
                    186: 
                    187: The initialization of a multi-dimensional array is something of a
                    188: science in  itself.  The ANSI Standard defines  that the ranks in
                    189: an array  are filled from  right to left.   For example, consider
                    190: the array:
                    191: 
                    192: 
                    193: 
                    194: 
                    195: 
                    196: COHERENT Lexicon                                           Page 3
                    197: 
                    198: 
                    199: 
                    200: 
                    201: initialization              Definition             initialization
                    202: 
                    203: 
                    204: 
                    205:         int example[2][3][4];
                    206: 
                    207: 
                    208: This array  contains two groups of three  elements, each of which
                    209: consists  of four  elements.  Initialization  of this  array will
                    210: proceed from example[0][0][0] through example[0][0][3]; then from
                    211: example[0][1][0] through  example[0][1][3]; and so  on, until the
                    212: array is filled.
                    213: 
                    214: It is easy to  check initialization when there is one initializer
                    215: for each ``slot'' in the array; e.g.,
                    216: 
                    217: 
                    218:         int example[2][3] = {
                    219:                  1,  2,  3,  4,  5,  6
                    220:         };
                    221: 
                    222: 
                    223: or:
                    224: 
                    225: 
                    226:         int example[2][3] = {
                    227:                 {  1,  2,  3 }, {  4,  5,  6 }
                    228:         };
                    229: 
                    230: 
                    231: The situation becomes more difficult when an array is only parti-
                    232: ally initialized; e.g.,
                    233: 
                    234: 
                    235:         int example[2][3] = {
                    236:                 { 1 }, { 2, 3 }
                    237:         };
                    238: 
                    239: 
                    240: which is equivalent to:
                    241: 
                    242: 
                    243:         int example[2][3] = {
                    244:                 { 1, 0, 0 }, { 2, 3, 0 }
                    245:         };
                    246: 
                    247: 
                    248: As  can be  seen, braces  mark  the end  of initialization  for a
                    249: ``cluster''  of  elements  within  an  array.  For  example,  the
                    250: following:
                    251: 
                    252: 
                    253:         int example[2][3][4] = {
                    254:                 5, { 1, 2 }, { 5, 2, 4, 3 }, { 9, 9, 5 },
                    255:                 { 2, 3, 7 } };
                    256: 
                    257: 
                    258: is equivalent to entering:
                    259: 
                    260: 
                    261: 
                    262: COHERENT Lexicon                                           Page 4
                    263: 
                    264: 
                    265: 
                    266: 
                    267: initialization              Definition             initialization
                    268: 
                    269: 
                    270: 
                    271: 
                    272:         int example[2][3][4] = {
                    273:                 { 5, 0, 0, 0 },
                    274:                 { 1, 2, 0, 0 },
                    275:                 { 5, 2, 4, 3 },
                    276: 
                    277:                 { 9, 9, 5, 0 },
                    278:                 { 2, 3, 7, 0 },
                    279:                 { 0, 0, 0, 0 }
                    280:         };
                    281: 
                    282: 
                    283: The braces end the initialization of one cluster of elements; the
                    284: next cluster is  then initialized.  Any elements within a cluster
                    285: that have not yet been initialized when the brace is read are in-
                    286: itialized in the default manner.
                    287: 
                    288: ***** See Also *****
                    289: 
                    290: array, definitions, struct, union
                    291: 
                    292: 
                    293: 
                    294: 
                    295: 
                    296: 
                    297: 
                    298: 
                    299: 
                    300: 
                    301: 
                    302: 
                    303: 
                    304: 
                    305: 
                    306: 
                    307: 
                    308: 
                    309: 
                    310: 
                    311: 
                    312: 
                    313: 
                    314: 
                    315: 
                    316: 
                    317: 
                    318: 
                    319: 
                    320: 
                    321: 
                    322: 
                    323: 
                    324: 
                    325: 
                    326: 
                    327: 
                    328: COHERENT Lexicon                                           Page 5
                    329: 
                    330: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.