Correct option is B
In C language, the expression num[i] is defined as *(num + i).
Due to commutativity of addition, num + i and i + num represent the same memory address. Therefore, *(i + num) is also equivalent to num[i].
Additionally, the syntax i[num] is valid because array subscripting in C is defined as a symmetric operation — meaning a[b] is identical to b[a].
Hence, all three — *(num + i), i[num], and *(i + num) — produce the same result as num[i].
Important Key Points:
- In C, the array subscript operator [ ] is defined as *(base + index).
- The expression num[i] and i[num] are functionally identical.
- Both pointer arithmetic and array indexing ultimately reference the same memory address.
Knowledge Booster:
- Only (ii): Incorrect because (ii) is valid, but excluding (i) and (iii) is wrong — they are also equivalent.
- Only (i): Incorrect since (ii) and (iii) yield the same outcome.
- Only (iii): Incorrect because (i) and (ii) are equally valid representations of num[i].