There is this little trick question that some interviewers like to ask for whatever reason:
int arr[] = {1, 2, 3}; 2[arr] = 5; // does this line compile? assert(arr[2] == 5); // does this assertion fail?
From what I can understand, a[b]
gets converted to *(a + b)
and since addition is commutative, it doesn't really matter their order, so 2[a]
is really *(2 + a)
and that works fine.
Is this guaranteed to work by C and/or C++'s specs?
To access an individual element of an array, use the name of the array name followed by the index of the element in square brackets. Array indices start at 0 and end at size-1: array_name[index]; accesses the index'th element of array_name starting at zero.
Arrays in C are indexed starting at 0, as opposed to starting at 1. The first element of the array above is point[0]. The index to the last value in the array is the array size minus one. In the example above the subscripts run from 0 through 5.
Array elements are accessed by using an integer index. Array index starts with 0 and goes till the size of the array minus 1. The name of the array is also a pointer to the first element of the array.
You can access an array element by referring to its index number. The indexes in NumPy arrays start with 0, meaning that the first element has index 0, and the second has index 1 etc.
Yes. 6.5.2.1 paragraph 1 (C99 standard) describes the arguments to the []
operator:
One of the expressions shall have type "pointer to object
type
", the other expression shall have integer type, and the result has type "type
".
6.5.2.1 paragraph 2 (emphasis added):
A postfix expression followed by an expression in square brackets
[]
is a subscripted designation of an element of an array object. The definition of the subscript operator[]
is thatE1[E2]
is identical to(*((E1)+(E2)))
. Because of the conversion rules that apply to the binary+
operator, ifE1
is an array object (equivalently, a pointer to the initial element of an array object) andE2
is an integer,E1[E2]
designates theE2
-th element ofE1
(counting from zero).
It says nothing requiring the order of the arguments to []
to be sane.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With