Click here to Skip to main content
11,639,861 members (59,263 online)
Rate this: bad
good
Please Sign up or sign in to vote.
See more: c/c++
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*ptr)[4]=a;
what do ptr and *ptr mean in this context? Why ptr and *ptr point to the same meory address
Posted 21-Apr-13 4:29am

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

ptr is a variable, in this case it is declared as a pointer to an array of 4 integers.

To read the declaration, start with the name of the variable (ptr in this case) and work out, going right when possible:
int (*ptr)[4]=a;
      ptr
 
"ptr is..."
We can't go right because we need a matching bracket first, so we go left
int (*ptr)[4]=a;
    (*ptr)
 
"ptr is a pointer to..."
Now we have closed the brackets so we can go right again:
int (*ptr)[4]=a;
    (*ptr)[4]
 
"ptr is a pointer to an array of four...
The equals ends teh declaration, so we have to go left again
int (*ptr)[4]=a;
int (*ptr)[4]=a;
 
"ptr is a pointer to an array of integers"
And the rest of teh line assigns a suitable value.

So when you use ptr later in your code, you are referring to the instance of an array of three arrays of four integers.
When you refer to *ptr in your code you are referring to one of the arrays of four integers, because the "*" dereferences the pointer.


Did that make sense?
  Permalink  
Comments
CPallini at 21-Apr-13 11:56am
   
Yes, it did.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Suvendu Shekhar Giri 285
1 CPallini 177
2 F-ES Sitecore 170
3 sasanka sekhar panda 155
4 jyo.net 142
0 OriginalGriff 9,081
1 Sergey Alexandrovich Kryukov 8,847
2 Mika Wendelius 7,027
3 Suvendu Shekhar Giri 2,650
4 F-ES Sitecore 2,558


Advertise | Privacy | Mobile
Web01 | 2.8.150731.1 | Last Updated 21 Apr 2013
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100