What will print out about this code?
C Interview Questions and Answers
(Continued from previous question...)
What will print out about this code?
What will print out?
main()
{
char *p1=name;
char *p2;
p2=(char*)malloc(20);
memset (p2, 0, 20);
while(*p2++ = *p1++);
printf(%s\n,p2);
}
The pointer p2 value is also increasing with p1 .
*p2++ = *p1++ means copy value of *p1 to *p2 , then increment both addresses (p1,p2) by one , so that they can point to next address . So when the loop exits (ie when address p1 reaches next character to name ie null) p2 address also points to next location to name . When we try to print string with p2 as starting address , it will try to print string from location after name
hense it is null string
.
eg :
initially p1 = 2000 (address) , p2 = 3000
*p1 has value n ..after 4 increments , loop exits
at that time p1 value will be 2004 , p2 =3004
the actual result is stored in
3000 - n , 3001 - a , 3002 - m , 3003 -e
we r trying to print from 3004
. where no data is present
thats why its printing null .
Answer:empty string.
(Continued on next question...)
Other Interview Questions
|