It's valid to address it, but not to see what's there. (The really short answer is, "Yes, so don't worry about it.") With most compilers, if you sayint i, a[MAX], j;then either i or j is at the part of memory just after the last element of the array. The way to see whether i or j follows the array is to compare their addresses with that of the element following the array. The way to say this in C is that either& i == & a[ MAX ]is true or& a[ MAX ] == & jis true. This isn't guaranteed; it's just the way it usually works. The point is, if you store something in a[MAX], you'll usually clobber something outside the a array. Even looking at the value of a[MAX] is technically against the rules, although it's not usually a problem. Why would you ever want to say &a[MAX]? There's a common idiom of going through every member of a loop using a pointer. Instead offor ( i = 0; i < MAX; ++i ){ /* do something */;}C programmers often write this:for ( p = a; p < & a[ MAX ]; ++p ){ /* do something */;}The kind of loop shown here is so common in existing C code that the C standard says it must work.
C++
Topic: Array
Is it valid to address one element beyond the end of an array?
Browse random answers:
Explain about Declaring Arrays ?
Explain about Initializing Arrays?
Explain about Accessing Array Elements ?
What is the difference between an ARRAY and a LIST?
Define pointer and array. Explain the difference between them.
When should we use container classes instead of arrays?
What is Dynamic memory management for array?
What is the difference between class and objects?
What is static class member?
What are methods and fields?
What is an array?
What is a character array?
How do you decide which integer type to use?
Can you store multiple data types in System.Array?
Difference between "vector" and "array"?
How can double dimensional arrays be dynamically initialized in C++?
What is the difference between the System.Array.CopyTo() and System.Array.Clone()?
Why can't constant values be used to define an array's initial size?
What will happen if in a C program you assign a value to an array element whose subscript exceeds the size of array?
Delete duplicate elements from array
Is it valid to address one element beyond the end of an array?
Can the sizeof operator be used to tell the size of an array passed to a function?
What is meant by ?method-wars??
Write a program to delete an element from an array?