Categories:
.NET (357)
C (330)
C++ (183)
CSS (84)
DBA (2)
General (7)
HTML (4)
Java (574)
JavaScript (106)
JSP (66)
Oracle (114)
Perl (46)
Perl (1)
PHP (1)
PL/SQL (1)
RSS (51)
Software QA (13)
SQL Server (1)
Windows (1)
XHTML (173)
Other Resources:
Using Pointers
What print out will the folloging code produce?
main() { char *p1=“name”; char *p2; p2=(char*)malloc(20); memset (p2, 0, 20); while(*p2++ = *p1++); printf(“%s\n”,p2);> }
✍: Guest
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.
2007-02-26, 6430👍, 0💬
Popular Posts:
How Are Vertical Margins between Two Block Elements Collapsed? - CSS Tutorials - Understanding Multi...
How To Write a Query with a Right Outer Join? - Oracle DBA FAQ - Understanding SQL SELECT Query Stat...
How Can we change priority & what levels of priority are provided by Dot Net? Thread Priority ca...
If we have two version of same assembly in GAC how do we make a choice ? OK first let’s try to under...
What will be printed as the result of the operation below: main() { int x=20,y=35; x=y++ + x++; y= +...