The Gateway to Computer Science Excellence
First time here? Checkout the FAQ!
x
0 votes
105 views
#include<stdio.h>
int main(){
int (*a)[5];
int arr[5][5]={
          {10,65,300,400,500},
          {100,20,3000,40,5000}
          };
a = arr;
++a ;
char *ptr = (char*)*a;
++a ;
printf("%d %d %d",**a,*arr[1],*ptr);
return 0;
}
in Programming by (37 points)
edited by | 105 views

1 Answer

+1 vote
Best answer

Here arr=$\begin{pmatrix} 10& 65& 300& 400& 500\\ 100& 20& 3000& 40& 5000\\ 0& 0& 0& 0& 0\\ 0& 0& 0& 0& 0\\ 0& 0& 0& 0& 0\\ \end{pmatrix}$

arr dimension is 5*5. a is also 2D array in which each row contain 5 elements.

Suppose arr starting address is 1000 and consider integer will take 4 Bytes.

Now, a=arr so pointer a will also point to the address 1000. 

The next step is ++a;

Here, a is 2D array so ++a will skip one row i.e now a points to the address 1020. (1000 + (5*4)).


The next step is char *ptr = (char*)*a;

It will create a character pointer ptr which points to the address 1020.


The next step is ++a;

++a will again skip one row i.e now a points to the address 1040. (1020 + (5*4)).


Now **a means **(a+0) which is element on 1040 address i.e 2rd row 1st element [2][1] which is 0 because here arr is initialize at compile time so all remaining value initialize as 0..

*arr[1] means **(arr+1) which is element on 1020 address i.e 1st row 1st element [1][1] which is 100.

*ptr means value on 1020 adress which is again 100.

So, Output is: 0 100 100.

by Junior (559 points)
selected by
0
Thanks for the answer but compiler gives the output as 0 , 100, 100
0
Oh sorry ..U r right answer is 0 100 100 bcz it is compiled time initialization so compiler initializes all remaining value as 0.
0
why compiler initialize as 0, not garbage
0
If you just declare arr[5][5] and after that using for loop for initializing array then the remaining value will be garbage. That is known as run time initialization.

But here at declaration time, you initialize an array so compiler designer put initialization code for initialization of array so it depends on compiler designer what should do at compile time initialization.

So It's C language compiler rule.

Related questions

+6 votes
3 answers
2
Quick search syntax
tags tag:apple
author user:martin
title title:apple
content content:apple
exclude -tag:apple
force match +apple
views views:100
score score:10
answers answers:2
is accepted isaccepted:true
is closed isclosed:true
49,807 questions
54,727 answers
189,301 comments
79,843 users