I have a question about the array name a
int a[10]
How is the array name defined in C++? A constant pointer? It is defined like this or just we can look it like this? What operations can be applied on the name?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
The C++ standard defines what an array is and its behaviour. Take a look in the index. It’s not a pointer, const or otherwise, and it’s not anything else, it’s an array.
To see a difference:
Clearly a and b are not the same type, since they have different sizes.
In most contexts, an array name “decays” to a pointer to its own first element. You can think of this as an automatic conversion. The result is an rvalue, meaning that it’s “just” a pointer value, and can’t be assigned to, similar to when a function name decays to a function pointer. Doesn’t mean it’s “const” as such, but it’s not assignable.
So an array “is” a pointer much like a function “is” a function pointer, or a long “is” an int. That is to say, it isn’t really, but you can use it as one in most contexts thanks to the conversion.