Background:
In this question x is address of first element of the array x. The mathematical statement alpha % 2 returns 1 if number is odd.
Working:
When we pass p = address of first element of array and n = 2023 following operation happens:
Passed values: Whats happening inside function
n = 2023 p is pointer to first element: Subtract one from n and pass it again to mystry. Also p will be passed as p→ c which is pointer to next element of array.
n = 2022 p = address of second element of array: subtract two from current n and pass it again to mystry. Also p will be p->c which is pointer to first element of array.
n = 2020 p = address of first element of array.
n = 2018 p = address of second element of array.
n = 2016 p = address of first element of array.
… A moments later … :)
n = 2 p = address of second element of array
n = 0 p = address of first element of array: Here as it is 0 function will return p++. Which simply means it will return p.
In printf function we are printing p->a which is 2023\0 hence 2023 will be output.