const for array size expressions on argument

前端 未结 2 1333
长发绾君心
长发绾君心 2021-02-19 16:56

I have the following C code example:

int f(const int farg[const 5])
{
}

What does the additional const for the array size do? And what is the d

相关标签:
2条回答
  • 2021-02-19 17:09

    What does the additional const for the array size do?

    C11: 6.7.6.3:

    A declaration of a parameter as ‘‘array of type’’ shall be adjusted to ‘‘qualified pointer to type’’, where the type qualifiers (if any) are those specified within the [ and ] of the array type derivation.

    This means

    int f(const int farg[const 5])  
    

    will be adjusted to

    int f(const int *const farg)  
    

    And what is the difference when I omit the const there?

    After omitting, it is equivalent to

    int f(const int frag[5])  //or int f(const int frag[])
    

    which is ultimately equivalent to

    int f(const int *farg)
    
    0 讨论(0)
  • 2021-02-19 17:27
    int d(const int darg[5])
    

    Means darg is a pointer to const int.

    int e(int earg[const 5])
    

    Means earg is a const pointer to int. This is a c99 feature. T A[qualifier-list e] is equivalent as T * qualifier-list A in the parameter declaration.

    And of course (from above):

    int f(const int farg[const 5])
    

    Means farg is a const pointer to const int.

    0 讨论(0)
提交回复
热议问题