Sharing is caring!

C and C++ are the most commonly used programming languages as these are the basic beginner’s doors to the programming world. Pointers and references are some of the most useful facilities which these languages provide. Pointers are used in C and C++, and references are supported in C++, Python, and other languages.

Key Takeaways

  1. Pointers store memory addresses of variables or objects, while references act as aliases for existing variables.
  2. Pointers can be reassigned to different memory addresses, while references cannot be changed after initialization.
  3. Pointers require explicit dereferencing to access the value they point to, while references can be used directly, like the original variable.

Pointer vs Reference

A pointer is a variable that receives the memory address of a different variable, and it can be initialized multiple times in the program depending on how many times it’s needed. A reference is an alternative program variable, and it can only be initialized one time in the entire program.

Pointer vs Reference

A pointer is a variable that has another variable’s address or location as its value. They can be initialized anywhere in a program with operators like ‘*’ and ‘->’. A pointer variable can also be made null, and they also support reinitialization. The base data type declares pointers followed by an asterisk and the pointer’s name. 

A reference is a variable with another name for an already subtle program variable. As soon as a reference variable is created, it should be initialized. It makes an alias of another variable. The & operator is used for design references. They are made by base data type followed by ‘&’ and the variable’s name.

Comparison Table

Parameters of ComparisonPointerReference
DefinitionThe variable which holds the memory address of another variable is called a pointer variable.A reference is an alias to another variable, a reference to it.
Null referenceA null value can be assigned to a pointer.A reference variable has no null value assignment. 
SyntaxDatatype *PointerName; Where Datatype is the base data type and PointerName is the name of the pointer declared.Datatype &ReferenceName = AnotherVariable; Where ReferenceName is the name of the reference and AnotherVariable is the variable that is being referred to.
InitializationUninitialized pointers are possible to be created.References can never be created in an uninitialized
ReinitializationPointer variables can be initialized again and again in the program according to the need.A reference variable can be initialized only once in a program.

What is Pointer?

In a nutshell, a pointer is a variable that holds the memory location or address of any other variable in a program. Pointers are functional in C and C++. A pointer variable stores the address location of the pointing variable. Pointer variables can be declared and then can be initialized with the variable whose address is to be determined.

Also Read:  Google Cloud vs Firebase: Difference and Comparison

Moreover, they have clarity, as an integer pointer can only hold the address of an integer variable. Pointers have a clear declaration manner. For example, int *point is a pointer to a variable of type int, and double *ABC is a pointer to a variable of data type double. The same concept applies to other data types also. Hence, a pointer is declared in the following manner:

int *pointer variable;

After the declaration of the pointer, the pointer variable is assigned to the variable whose address is to be determined. The above declaration statement makes use of a pointer that will store the value of an integer variable. 

pointervariable = &a;

Here, a is the integer variable used on the other side of the program whose address is stored in a variable pointer. Pointers also give the liability to get reinitialized. Their values can be changed according to their need. 

What is Reference?

A reference variable is an alias for another variable. In other words, the variable that refers to a program’s other subsisting variable is considered as a reference variable.

They have a limitation in that they cannot be assigned to a null value, and they cannot be declared, they are only initialized. After creating a reference,  the variable can be accessed by the reference name or by its original name. References are directly initialized. Example, 

int &ref = var;

Here, the ref is the name of the reference variable, and it points to the variable var, which is initialized in another part of the program. When the values of ref and var are printed, ref and var are observed to have the same value. Pointers are advantageous in saving memory because when they are passed as arguments to a function, they use the original memory location for every function call.

Also Read:  How to Download PDF from Google Drive Without Permission

Reference variables do not provide reinitialization, and these are only once initialized and unique. References do not point to a variable by storing its address in a separate memory location. Simply put, a reference variable is an alternate name for an existing variable. These are just aliases in the other name of the variable which is to be referenced.

Main Differences Between Pointer and Reference

  1. A pointer variable is referenced bypass by reference, whereas a reference variable is referenced bypass by value.
  2. Pointers support the facility of pointing to other pointers, whereas references lack this advantage. A reference variable cannot be made to point to multiple variables.
  3. Pointers support using arithmetic operators and acts as operands, whereas reference variables cannot be compatible with arithmetic operations.
  4. The size and memory address of a pointer variable is on the stack, whereas a reference variable has the original variables’ memory address, but it also takes up a bit of space on the stack. 
  5. Pointers have declaration advantages, whereas references are only initialized.
References
  1. https://link.springer.com/article/10.1023/A:1015362608943
  2. https://dl.acm.org/doi/pdf/10.1145/99583.99599
dot 1
One request?

I’ve put so much effort writing this blog post to provide value to you. It’ll be very helpful for me, if you consider sharing it on social media or with your friends/family. SHARING IS ♥️

Want to save this article for later? Click the heart in the bottom right corner to save to your own articles box!

By Sandeep Bhandari

Sandeep Bhandari holds a Bachelor of Engineering in Computers from Thapar University (2006). He has 20 years of experience in the technology field. He has a keen interest in various technical fields, including database systems, computer networks, and programming. You can read more about him on his bio page.