in Programming retagged ago by
8,700 views
10 votes
10 votes

Consider the following C program:

#include <stdio.h>
int main() {
        int arr[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 5}, *ip=arr+4;
        printf(“%d\n”, ip[1]);
        return 0;
}

The number that will be displayed on execution of the program is _______

in Programming retagged ago by
by
8.7k views

2 Comments

arr is base address of element $1$. 

arr+$4$ is base address of element $5$. Let it ip.

ip[$1$]=*(ip+$1$)= Base address of element $6$. 

6 is the answer. 

2
2
*p = arr + 4  = arr[4]

*(p+0) = arr[4]

*(p+1) = arr[4+1] = arr[5]
0
0

6 Answers

24 votes
24 votes
Best answer
$6$
ip is an integer pointer and the initial assignment sets it to the element at array index $4$ i.e. $5$.(holds address of ar index $4$)
The next statement refers to the next integer after it which is $6 (ip[1]=*(ip+1))$.
edited by

1 comment

The dereferencing part made it clear.
0
0
14 votes
14 votes

Hence Ans is 6.

7 votes
7 votes
int arr[]={1,2,3,4,5,6,7,8,9,0,1,2,5} , *ip = arr+4;

printf("%d\n",ip[1]);

ip is an integer pointer that is currently holding the address where 5 is stored.(i.e. a[4])

ip[1] = *(ip+1) = value present at the next address i.e. 6. so it will print 6.

5 votes
5 votes
arr+0 points to the 1st element of the array(index 0) which is 1.

Hence arr+4 will point to the 5th element of the array(index 4) which is 5.

As per assignment $*ip=arr+4$ , $ip[0]=5$

Hence $ip[1]=6$
Answer:

Related questions