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;
}
8, 8, 8
4000, 4002, 4004
4000, 4004, 4008
4000, 4008, 4016
Answer: Option
Explanation:
No answer description is available. Let's discuss.
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.

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.

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

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.

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

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

Swadhinur said:   1 decade ago
Keerthi the way you describe is the right concept of this problem.


Post your comments here:

Your comments will be displayed after verification.