Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pointer variable, differences in var and &var

#include <iostream>

using namespace std;

int main() {
    int* z = new int(9);

    cout << "address: " << z << endl;
    cout << "value: " << *z << endl;
    cout << "referance: " << &z << endl;
    return 0;
}

Looking at the cout values, I was expecting the address and reference to give the same address, but heres what the output is:

address: 0x7fc452c032a0
value: 9
referance: 0x7fff5191b8d8

Just curious about the reason for this, is the plain value(z) the address of the variable in the heap with a value of 9, where var(&z) is address of the pointer variable which is located in the stack?

Here is a visualization:

enter image description here

Is the

like image 983
Mitch Kroska Avatar asked Aug 31 '26 17:08

Mitch Kroska


2 Answers

&z designates the adress of the pointer int * z where you store the allocated adress new int(9).

The pointer z and the value 9 are stored at two different locations in memory.

There is not any notion of reference here, only adresses.

like image 171
O'Neil Avatar answered Sep 02 '26 07:09

O'Neil


Let me go through some of the basics first.

  • A variable is a name that is used to refer to some location in the memory, a location that holds a value with which we are working.

  • Using '&' in C/C++ we can get the address of the variable.

  • A pointer is a variable that stores the address of a variable. For instance, in the example you are referring to

    int* z = new int(9);
    

    variable z stores the address of the value 9 [new int(9)].

Now, finally this variable has to be stored at some location in the memory and this can be accessed using ampersand (&).

    &z //gives the address of the pointer to value 9 (address of variable z).

This is the same way the pointers and pointers to a pointer (multi level pointers) works.

like image 28
Nagarjuna Manchineni Avatar answered Sep 02 '26 08:09

Nagarjuna Manchineni



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!