
The function call is:
$\texttt{fun(arr + 1)}$
Here, $\texttt{arr + 1}$ means the address of $\texttt{arr[1]}$.
So, inside $\texttt{fun()}$, pointer $\texttt{p}$ initially points to $\texttt{arr[1]}$.
Initial array:
$\texttt{arr[0] = 5}$
$\texttt{arr[1] = 10}$
$\texttt{arr[2] = 15}$
First statement:
$\texttt{*p = *p + 1}$
Since $\texttt{p}$ points to $\texttt{arr[1]}$,
$\texttt{arr[1] = 10 + 1 = 11}$
Now,
$\texttt{p++}$
moves $\texttt{p}$ from $\texttt{arr[1]}$ to $\texttt{arr[2]}$.
Now,
$\texttt{*p = *p + 2}$
Since $\texttt{p}$ now points to $\texttt{arr[2]}$,
$\texttt{arr[2] = 15 + 2 = 17}$
$\texttt{arr[0]}$ remains unchanged.
Final array becomes:
$\texttt{5, 11, 17}$
$\therefore$ Output : $\texttt{5 11 17}$
Answer: C