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.
Shubham Patil said:
6 years ago
Here i = 8.
1) As p=&i is representing the value of i is 8.
2) q=&p => stores the address of p.
*q is the address stored in q ie address of p.
**q = value at address at p i.e. 8.
3) r=&q
Therefore *r= address of q.
**r= *(*q).
***r= *(*(*q)).
That i the value stored in p = 8.
Hence the answer is 8 8 8.
1) As p=&i is representing the value of i is 8.
2) q=&p => stores the address of p.
*q is the address stored in q ie address of p.
**q = value at address at p i.e. 8.
3) r=&q
Therefore *r= address of q.
**r= *(*q).
***r= *(*(*q)).
That i the value stored in p = 8.
Hence the answer is 8 8 8.
(5)
Divya said:
7 years ago
Thanks @Sunil Pradhan.
(2)
SONY said:
9 years ago
Thank you all for providing very good explanations.
(2)
Prajakta said:
7 years ago
Thank you very much @Sunil pradhan.
(1)
Sujata said:
8 years ago
@Sunil Pradhan.
Well explained, thanks!
Well explained, thanks!
(1)
Shivani agrawal said:
8 years ago
i=8;
p=&i implies *p=8;
q=&p implies *q=p means **q=8;
r=&q implies *r=q means ***r=8;
So, *p=**q=***r=i=8;.
p=&i implies *p=8;
q=&p implies *q=p means **q=8;
r=&q implies *r=q means ***r=8;
So, *p=**q=***r=i=8;.
(1)
Manjiri shastri said:
10 years ago
Can you please tell me how it work? I mean how pointer storing the address?
Sumallika said:
1 decade ago
p=&i
*p=*(&i)=i
so *p=8;
q=&p,
*q=*(&p)=p,
**q=*p,
**q=8;
r=&q,
*r=*(&q)=q
**r=*q,
***r=**q,
***r=8
*p=*(&i)=i
so *p=8;
q=&p,
*q=*(&p)=p,
**q=*p,
**q=8;
r=&q,
*r=*(&q)=q
**r=*q,
***r=**q,
***r=8
Harendra gotla said:
9 years ago
Thank you @Sumallika, the way you solve the problem is clever and easy to understand.
Sujan said:
9 years ago
p=&i;
therefore, *p=i; -> *p=8;
q=&p;
therefor, *q=p; **q=*p; -> **q=8;
r=&q;
therefor *r=q; **r=*q; ***r=**q=8!
therefore, *p=i; -> *p=8;
q=&p;
therefor, *q=p; **q=*p; -> **q=8;
r=&q;
therefor *r=q; **r=*q; ***r=**q=8!
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers