ok sir..here goes..
given gyan[]={10,20,30,40,50};

func(ptr++) when called takes ptr[0] ie., 10 to its module does 10+1=11 n returns 11 to the main but the main now points to 20 n prints it...similarly
i=1=> 20 becomes 21 in func() n returns 21 to main() n 30 is printed by main()
i=2=>30 becomes 31 in func() n returns 31 to main() n 40 is printed by main()
i=3=>40 becomes 41 in func() n returns 41 to main() n 50 is printed by main()
i=4 conditions fails n comes out of the loop n the program here terminates..

since location of the element in the array is being sent, the modified must be present in that location of the array..??!!
now if i did
for(i=0;i<4;i++)
printf("%d",*ptr++);
i am getting some other values other than these..

i hope wat i understood is correct about func(ptr++) ..