standard conversions: Array-to-pointer conversion

后端 未结 4 1405
予麋鹿
予麋鹿 2020-11-29 10:33

This is the point from ISO :Standard Conversions:Array-to-pointer conversion: $4.2.1

An lvalue or rvalue of type “array of N T” or “array o

4条回答
  •  孤独总比滥情好
    2020-11-29 11:23

    In both C and C++, an array can be used as if it were a pointer to its first element. Effectively, given an array named x, you can replace most uses of &x[0] with just x.

    This is how subscripting is able to be used with array objects:

    int x[5];
    x[2];     // this is the same as (&x[0])[2]
    

    This is also how an array can be passed to a function that has a parameter of pointer type:

    void f(int* p);
    
    int x[5];
    f(x);     // this is the same as f(&x[0])
    

    There are several contexts in which the array-to-pointer conversion does not take place. Examples include when an array is the operand of sizeof or the unary-& (the address-of operator), when a string literal is used to initialize an array, and when an array is bound to a reference to an array.

提交回复
热议问题