Const arrays in C

后端 未结 2 692
长情又很酷
长情又很酷 2021-02-18 14:42

Original question: If I define:

const int z[5] = {10, 11, 12, 13, 14}; 

does it mean:

  1. it\'s a constant array of integers i.e. the
2条回答
  •  Happy的楠姐
    2021-02-18 15:24

    In your case the answer is:

    1. Each element of z is a constant i.e. their value can never change.

    You can't create a const array because arrays are objects and can only be created at runtime and const entities are resolved at compile time.

    So, the const is interpreted as in the first example below, i.e. applied for the elements of the array. Which means that the following are equivalent: The array in your example needs to be initialized.

     int const z[5] = { /*initial (and only) values*/};
     const int z[5] = { /*-//-*/ };
    

    It is some type commutative property of the const specifier and the type-specifier, in your example int.

    Here are few examples to clarify the usage of constant:

    1.Constant integers definition: (can not be reassigned). In the below two expression the use of const is equivalent:

    int const a = 3;  // after type identifier
    const int b = 4;  // equivalent to before type qualifier
    

    2.Constant pointer definition (no pointer arithmetics or reassignment allowed):

    int * const p = &anInteger;  // non-constant data, constant pointer
    

    and pointer definition to a constant int (the value of the pointed integer cannot be changed, but the pointer can):

    const int *p = &anInteger;  // constant data, non-constant pointer
    

提交回复
热议问题