help with pointers

Started by
3 comments, last by xSKOTTIEx 18 years, 8 months ago
hey, could someone please help me with pointers, im just not getting it ok, is this right? // more pointers #include <iostream.h> int main () { int value1 = 5, value2 = 15; int *p1, *p2; p1 = &value1 // p1 = address of value1 p2 = &value2 // p2 = address of value2 *p1 = 10; // value pointed by p1 = 10 *p2 = *p1; // value pointed by p2 = value pointed by p1 p1 = p2; // p1 = p2 (value of pointer copied) *p1 = 20; // value pointed by p1 = 20 cout << "value1==" << value1 << "/ value2==" << value2; return 0; } declare and initialize 2 variables, value1 and value 2. p1, and p2, are pointers that point to an integer p1 = the address of value 1 p2 = the address of value 2 ok, im lost after that
Advertisement
1. int number = 10;
2. int *p;

3. p = &number

number is an integer with the value 10. This means that somewhere in the memory pool there is a memory cell which hold the value 10.
you refer to this value by simply using the declared integer named "number"

Now, p is a pointer to an int type.
when specifing p = &number , p now holds the memory address of the memory cell which holds the value of "number". The memory address is also a number, but is its NOT the value pointed by p. The value pointed by p is the value STORED at the memory address which p holds.
In order to refer to the value pointed by p, the '*' character is used.
thus, *p refers to the value STORED at the memory address that p holds.

If we continue the code above and do :
*p = 20;

The value which is pointed by p will be changed from 10 to 20.
And because the value of number is also stored at that memory addres, its value
also will be 20.

Hope that helped ;)
There is nothing that can't be solved. Just people that can't solve it. :)
*p1 = 10; // value pointed by p1 = 10

you store 10 to where p1 is pointing to (in this case value1).

*p2 = *p1; // value pointed by p2 = value pointed by p1

get the value of where p1 (value1) is pointing to and set that value to where p2 is pointing (value2)

p1 = p2; // p1 = p2 (value of pointer copied)

p1 is now pointing to the same address as p2 (p1 & p2 is now pointing to value2)

*p1 = 20; // value pointed by p1 = 20

set 20 to where p1 is pointing to, this will cause *p2 to be 20 as well

cout << "value1==" << value1 << "/ value2==" << value2;

output should be 10, 20 for value1 and value2 respectively
Okay, the deal with pointers are, they're really easy to get confused by newbies, and I understand, as it took me a day or so to really get them down.

Now, with the code you've shown, here's what's happening (look at the comments);

// more pointers#include <iostream.h>int main (){int value1 = 5, value2 = 15; // declaring two variables, and inititalizingint *p1, *p2; // declaring two pointers to integersp1 = &value1; // the VALUE of the pointer p1 is the memory address of value1p2 = &value2; // the VALUE of the pointer p2 is the memory address of value2*p1 = 10; // The value in the memory address the pointer is storing is          // changed to 10. value1 is now equal to 10 *p2 = *p1; // the value at the memory address pointed by p1 is assigned           // to p2. value2 value is now equal to value1p1 = p2; // the memory addresses that the pointers point to are now         // equal*p1 = 20; // value in the variable at the memory address pointed to by the          // pointer is 20cout << "value1==" << value1 << "/ value2==" << value2;return 0;}


I hope this helped, if you have any more questions, or need further explanation of pointers, you can PM me, I don't mind helping you out!
I suggest a video, called "Pointer Fun with Binky." Its great, and hilarious.

clicky
---------Coming soon! Microcosm II.

This topic is closed to new replies.

Advertisement