Categories:
.NET (357)
C (330)
C++ (184)
CSS (84)
DBA (2)
General (7)
HTML (4)
Java (574)
JavaScript (106)
JSP (66)
Oracle (114)
Perl (46)
Perl (1)
PHP (2)
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, 7591👍, 0💬
Popular Posts:
If XML does not have closing tag will it work? No, every tag in XML which is opened should have a cl...
What Is a TD Tag/Element? - XHTML 1.0 Tutorials - Understanding Tables and Table Cells A "td" elemen...
I am trying to assign a variable the value of 0123, but it keeps coming up with a different number, ...
Can you explain why your project needed XML? Remember XML was meant to exchange data between two ent...
What are database triggers? How are the triggers fired? Read this collection of questions and answer...