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 3 of 4.

Tarun said:   1 decade ago
@Jyothi. Explain nicely thanks for understand me.

Zohra said:   1 decade ago
Well explained. Sunil.

Madhu said:   1 decade ago
If it declaired that int i,*p then
p= &i (it means p stores the address of i)
*p=value at i
same way
q= &p
**q=value at &i(it means pointer to a integer pointer)
***r= value at &i(it means pointer to a pointer to a poiter )
and it has no limit to extend this pointer to pointer so we can use number of' *'.but all are print only the value so it prints 8,8,8.

Uttam said:   1 decade ago
Let the addresses of variables i,p,q,r are 0x100,0x200,0x300,0x400 respectively.

Here p,q,r are pointers.

p holds address of i.ie 0x100.

q holds address of p.ie 0x200.

r holds address of q.ie 0x300.


so we can say r is the pointer which indirectly refers to the address of variable i.

so value that pointer r holds is indirectly equal to the value of i.

Perumalsamy said:   1 decade ago
First assume i=8
and then
p =&i; // p holds address of i
q=&p; // q holds address of p
r=&q; // and r holds address of q
*p means value of i;
**q and ***r and is called chain pointer that means
p<-q<-r

So all value is 8.

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

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

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

Taniya said:   1 decade ago
Thanx all.

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.


Post your comments here:

Your comments will be displayed after verification.