c - Runtime error in the following code -


the following code,according me should run successfully,but fails @ runtime.i don't reason:

 void main()  {    int arr[5][3]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};    int *m=arr[0];    int **p=&m;    p=p+1;    printf("%d",**p);    } 

a.exe has stopped working @ runtime in gcc compiler,windows 7 64 bit

an array of arrays , pointer pointer quite different, , can't used interchangeably.

for example, if @ array arr looks in memory

 +-----------+-----------+-----------+-----------+-----+-----------+ | arr[0][0] | arr[0][1] | arr[0][2] | arr[1][0] | ... | arr[4][2] | +-----------+-----------+-----------+-----------+-----+-----------+ 

when have pointer-to-pointer p program don't knows points array of arrays, instead it's treated array of pointers, looks in memory:

 +------+------+------+-----+ | p[0] | p[1] | p[2] | ... | +------+------+------+-----+   |      |      |   |      |      v   |      |        |      v   |        v   

so when p + 1 p[1] not same arr[1].


Comments

Popular posts from this blog

javascript - Laravel datatable invalid JSON response -

java - Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; -

sql server 2008 - My Sql Code Get An Error Of Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value '8:45 AM' to data type int -