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, 7492👍, 0💬
Popular Posts:
How To Create Nested Tables? - XHTML 1.0 Tutorials - Understanding Tables and Table Cells You can cr...
Are risk constant through out the project ? * Never say that risk is high through out the project. R...
How To Create an Add-to-My-Yahoo Button on Your Website? - RSS FAQs - Adding Your Feeds to RSS News ...
How To Decrement Dates by 1? - MySQL FAQs - Introduction to SQL Date and Time Handling If you have a...
What is the difference between include directive & jsp:include action? Difference between includ...