Thursday, September 27, 2007

TECH QUES OF (27/9)

main()
{
char *p="hai friends",*p1;
p1=p;
while(*p!='\0')
{
++*p++;
}
printf("%s %s",p,p1);
}

2 comments:

  1. mixed garbage value

    ReplyDelete
  2. ++*p++ will be parse in the given order

    * *p that is value at the location currently pointed by p will be taken
    * ++*p the retrieved value will be incremented
    * when ; is encountered the location will be incremented that is p++ will be executed


    Hence, in the while loop initial value pointed by p is 'h', which is changed to 'i' by executing ++*p and pointer moves to point, 'a' which is similarly changed to 'b' and so on. Similarly blank space is converted to '!'. Thus, we obtain value in p becomes “ibj!gsjfoet” and since p reaches '\0' and p1 points to p thus p1doesnot print anything.

    ReplyDelete