A friend asked me to write a function in C to return the 100th element of an array. I’m not very familiar with C, so I wasn’t sure how to make a generic function that could do this with any type of array, so I cheated and assumed that it was an array of integers and wrote this function:
int GetHundredthElement(int *array) {
return array[100 - 1];
}
(the - 1 is there because arrays are zero-indexed)
I asked him how to make a function that would work for any type of array. He told me there was a simple way to do it:
int GetHundredthElement = 100 - 1;
and that this “function” could be called like this:
GetHundredthElement[array];
I tried it, and it worked, but doesn’t look like a function to me because it uses bracket notation, which isn’t how function calls are written in C. I don’t really understand exactly what this code is doing or how it’s doing it. What’s going on here?
You are right about the fact that
GetHundredthElementis not a function– it is, as you would expect, an integer.However, this illustrates a surprising ability in C where you can reverse the order of your array access!
This is because an array access can be implemented in pointer arithmetic: