A. Arrays start from a zero index primarily because of the following reasons:
Zero-based Indexing : When arrays start at index zero, the element at the first position (index 0) is located at the beginning of the array's memory block. Zero-based indexing simplifies calculation of the offset of an element, it's straightforward to compute: offset = base_address + (element_size * index).
One-based Indexing : If arrays started at one, the offset calculation would not be as straightforward : offset = base_address + (element_size * (index - 1)) which makes calculation less intuitive.
Example : Let us illustrate this using an example;
If the array starts at a base address of 1000 and each integer element has a size of 4 bytes, we can calculate the offset for index 2 (the third element) using zero-based indexing as follows:
The result is still the same, and the element at index 3 (the third element) is located at memory address 1008.
Conclusion: We can say that whether we use zero-based indexing or one-based indexing, we arrive at the same offset calculation and memory address (1008) for the third element. But, zero-based indexing remains simpler and aligns more naturally with memory addressing and arithmetic, hence, an implicit choice.