Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Learn Reference vs Pointers | References Fundamentals
C++ Pointers and References

book
Reference vs Pointers

References and pointers provide indirect access to variable values. but they have some key differences, as well as pros and cons.

Syntax

  • Pointers are declared using the * symbol;

  • References are declared using the & symbol.

Initialization

You can't declare an empty reference. But you can declare an empty pointer with nullptr.

Reassignment

References can't be re-assigned to refer to a different object.

cpp

main

copy
#include <iostream>

int main()
{
int x = 125, y = 500;
// creating a reference to x variable
int& ref_x = x;
ref_x = y; // attempt to re-assigned ref_x
ref_x = 0;
std::cout << x << ' ' << y;
}
12345678910111213
#include <iostream> int main() { int x = 125, y = 500; // creating a reference to x variable int& ref_x = x; ref_x = y; // attempt to re-assigned ref_x ref_x = 0; std::cout << x << ' ' << y; }

Pointers can be re-assigned to point to different memory locations

cpp

main

copy
#include <iostream>

int main()
{
int x = 125, y = 500;
// creating a pointer to x variable
int* ptr = &x;
ptr = &y; // attempt to re-assigned ref_x
*ptr = 0;
std::cout << x << ' ' << y;
}
12345678910111213
#include <iostream> int main() { int x = 125, y = 500; // creating a pointer to x variable int* ptr = &x; ptr = &y; // attempt to re-assigned ref_x *ptr = 0; std::cout << x << ' ' << y; }

Accessing the value

To access the value pointed by a pointer, you use the dereference operator *. For references, you don't need to use any special operator; you simply use the reference variable directly.

Both pointers and references are crucial in memory management, contributing to the flexibility of programs. Their usage depends on the context.

Everything was clear?

How can we improve it?

Thanks for your feedback!

Section 3. Chapter 4
some-alt