C Programming - Pointers - Discussion
Discussion Forum : Pointers - Find Output of Program (Q.No. 5)
5.
What will be the output of the program If the integer is 4bytes long?
#include<stdio.h>
int main()
{
int ***r, **q, *p, i=8;
p = &i;
q = &p;
r = &q;
printf("%d, %d, %d\n", *p, **q, ***r);
return 0;
}
Discussion:
35 comments Page 1 of 4.
Sunil pradhan said:
1 decade ago
Here each * means address holding it i.e. 'p' holds address of 'i', *p value at i = 8.
'q' holds address of p, p holds address of 'i'. So with two ** we are back to value at i = 8.
Similarly, three times *** means jump from r to q to p that holds i = 8.
'q' holds address of p, p holds address of 'i'. So with two ** we are back to value at i = 8.
Similarly, three times *** means jump from r to q to p that holds i = 8.
Siba said:
1 decade ago
Its a nice explanation.
Kiran Kumar said:
1 decade ago
i = 8
(Assume)address = 100
p = 100 (*p is 8)
address = 200
q = 200 (**q is 8 ) and (*q is 100)
address is 300
r = 300 (***r is 8)&(**r is 100)&(*r is 200)
address = 400
therefore, i = *p = **q = ***r = 8.
(Assume)address = 100
p = 100 (*p is 8)
address = 200
q = 200 (**q is 8 ) and (*q is 100)
address is 300
r = 300 (***r is 8)&(**r is 100)&(*r is 200)
address = 400
therefore, i = *p = **q = ***r = 8.
Jyothi said:
1 decade ago
p=&i;
means: *p=i; [*p=8]
q=&p;
means : *q=p => **q=*p => **q=8
r=&q => *r=q =>***r=**q =>***r=8;
so, 8,8,8
means: *p=i; [*p=8]
q=&p;
means : *q=p => **q=*p => **q=8
r=&q => *r=q =>***r=**q =>***r=8;
so, 8,8,8
Sunil said:
1 decade ago
Thanks
Arnab Bhattacharya said:
1 decade ago
Thank you Sunil Pradhan!
The way you have explained is very easy to understand the concept clearly. Hope more posts from you.
The way you have explained is very easy to understand the concept clearly. Hope more posts from you.
Taniya said:
1 decade ago
Thanx all.
Vivek said:
1 decade ago
*p=value in (&i)=8
q=&p
then **q=value in (p=(value in(&i))=8
r=&q
then ***r=value in (q=(value in(p=(value in &i)))=8
q=&p
then **q=value in (p=(value in(&i))=8
r=&q
then ***r=value in (q=(value in(p=(value in &i)))=8
Keerthi kumar said:
1 decade ago
Initially i=8 (given integer is 4 bytes long)
p=&i implies address of i (4000)
q=&p implies address of p (4004)
r=&q implies address of q (4008)
output
*p=8,
**q since q=4004
*q=4000
**q=8
***r since r=4008
*r=4004
**r=4000
***r=8 hence output is 8,8,8
p=&i implies address of i (4000)
q=&p implies address of p (4004)
r=&q implies address of q (4008)
output
*p=8,
**q since q=4004
*q=4000
**q=8
***r since r=4008
*r=4004
**r=4000
***r=8 hence output is 8,8,8
Swadhinur said:
1 decade ago
Keerthi the way you describe is the right concept of this problem.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers