|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
Re: C++ help: Understanding pointers?
Pointers are exactly what they sound like, if you have encountered 'References' a pointer is very similar. A pointer is literally the memory address of a piece of data, the type you assign to the pointer dictates what you expect to find at that address (such as a class, an array, or an integer).
You use a pointer typically to avoid moving around big chunks of memory. If you imagine the basic robot class, it has a large number of variables for motors drive systems etc, all of these are stored in memory. If you call a funtion and pass in the ACTUAL robot, you end up making a copy of the whole robot (remember if you change a variable you pass into a function, you are changing a copy, not the original) which can be a lot of memory to copy and is quite wasteful. If you simply pass a pointer, you essentially say "our robot is located a memory address 0x800f000" and that pointer (the address only) becomes the variable which is copied into memory, when you look up that memory address you get the real robot, so if you change attributes of the robot, you are not changing a copy, but rather the real robot. A semi-similar example would be if you were trying to send someone a file you downloaded from the internet, you could either email the file itself (giving them a copy of the same file) or email them a link to the file. In both cases they have access to the file, but the latter is more efficient. |
|
#2
|
|||
|
|||
|
Re: C++ help: Understanding pointers?
Usually "a pointer to a pointer" is used with 2d arrays. The first pointer points to an array of pointers, which each point to their own arrays.
The first time I encountered a pointer to a pointer, I was writing a function that set the address of a block of memory I allocated to the address that was passed in. Can get pretty complicated, usually it's easier to draw a picture. |
|
#3
|
||||
|
||||
|
Re: C++ help: Understanding pointers?
The way I try to teach pointers to our kids is to analogize them to book pages.
If I have a book of 100 blank pages, then a pointer is like me saying "hey george, write something on page 5". That "page 5" is telling george the address that I want him to write to. A pointer to a pointer would be: "hey george, go to the page number you find on page 5". Whenever you say "page __", that's a pointer. A pointer to a pointer to a pointer would be "hey george, go to the page number you find on the page you found on page 5". The main problem with this analogy is that 'page' is a term for a related memory concept, but you don't need to learn about that until much much later. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|