C Programming :: Dynamic Memory Allocation - Discussion
11 / 18
What will print out?
#include
void main()
{
char *p1="name";
char *p2;
p2=(char*)malloc(20);
memset (p2, 0, 20);
while(*p2++ = *p1++);
printf("%s\n",p2);
}
void main()
{
char *p1="name";
char *p2;
p2=(char*)malloc(20);
memset (p2, 0, 20);
while(*p2++ = *p1++);
printf("%s\n",p2);
}
Aname
Bempty string
Cnull values
DNone of these
Show Explanation
As in each step p1 and p2 address is incremented, when while loop terminated y that time p1 and p2 will point to null. so that when p2 printed blank printed. even p1 will too print blank (empty string)
Asked In ::
In the given question expression while(*p2++ = *p1++); loop is evaluating the expression: *p2++ = *p1++. The while loop expression *p2 = *p1 is evaluated using the result of *p1. However, this value is still assigned to *p2 even if the expression evaluates as false or (0).
As in each step p1 and p2 address is incremented, when while loop terminated y that time p1 and p2 will point to null. so that when p2 printed blank printed. even p1 will too print blank (empty string)
Read Full Answer
Report Error
Please Login First Click Here