Languages [3i Infotech Placement]: Sample Questions 79 - 79 of 546

Glide to success with Doorsteptutor material for competitive exams : get questions, notes, tests, video lectures and more- for all subjects of your exam.

Question 79

Edit

Describe in Detail

Essay▾
  1. main ()
  2. {
  3.     staticinta[ ] ={ 0, 1, 2, 3, 4};
  4.     int ⚹p[ ] ={ a, a +1, a +2, a +3, a +4};
  5.     int ⚹⚹ ptr =p;
  6.     ptr ++;
  7.     printf ( %d %d %d, ptr-p, ⚹ptr-a, ⚹⚹ ptr);
  8.     ptr ++;
  9.     printf ( %d %d %d, ptr-p, ⚹ptr-a, ⚹⚹ ptr);
  10.     ⚹+ +ptr;
  11.     printf ( %d %d %d, ptr-p, ⚹ptr-a, ⚹⚹ ptr);
  12.     ++ ⚹ptr;
  13.     printf ( %d %d %d, ptr-p, ⚹ptr-a, ⚹⚹ ptr);
  14. }

Explanation

111

222

333

344

In a program

Table Showing the Program
static int a [] = {0, 1,2, 3,4} ;Let us consider the array and the two pointers with some address

a

0

1

2

3

4

Address is 100 102 104 106 108

int ⚹ p [] = {a, a + 1, a + 2, a + 3, a + 4} ;P

100

102

104

106

108

Address is 1000 1002 1004 1006 1008

int ⚹⚹ ptr = p;Ptr

1000

Address is 2000

ptr ++ ;After execution of the instruction ptr ++ value in ptr becomes 1002, if scaling factor for integer is 2 bytes.
printf (% d % d % d, ptr-p, ⚹ ptr-a, ⚹⚹ ptr) ;
  • Now, ptr - p is value in ptr - starting location of array p, (1002 - 1000) / (scaling factor) = 1,
  • ⚹ ptr - a = value at address pointed by ptr - starting value of array a,
1002 has a value 102 so the value is (102 - 100) / (scaling factor) = 1,
  • ⚹⚹ ptr is the value stored in the location pointed by the pointer of ptr = value pointed by value pointed by 1002 = value pointed by 102 = 1. Hence the output of the firsprintf is 1,1, 1.
⚹ ptr ++ ;After execution of ⚹ ptr ++ increments value of the value in ptr by scaling factor, so it becomes1004
printf (% d % d % d, ptr-p, ⚹ ptr-a, ⚹⚹ ptr) ;Hence, the outputs for the second printf are ptr - p = 2, ⚹ ptr - a = 2, ⚹⚹ ptr = 2.
⚹+ + ptr;After execution of ⚹+ + ptr increments value of the value in ptr by scaling factor, so it becomes1004.
printf (% d % d % d, ptr-p, ⚹ ptr-a, ⚹⚹ ptr) ;Hence, the outputs for the third printf are ptr - p = 3, ⚹ ptr - a = 3, ⚹⚹ ptr = 3.
++ ⚹ ptr;After execution of ++ ⚹ ptr value in ptr remains the same,

The value pointed by the value is incremented by the scalingfactor.

So the value in array p at location 1006 changes from 106 to 108

printf (% d % d % d, ptr-p, ⚹ ptr-a, ⚹⚹ ptr) ;Hence, the outputs for the fourth printfare ptr - p = 1006 - 1000 = 3, ⚹ ptr - a = 108 - 100 = 4, ⚹⚹ ptr = 4.

Developed by: