Introduction to Pointers in C++

Introduction to Pointers in C++

6 mins read498 Views Comment
Updated on Apr 4, 2023 13:51 IST

In C++, when a variable is declared, it is given a designated place in memory where its value is stored. This location is referred to as the memory address of the variable. Pointers are a special type of variable that store the memory address of other variables, adding additional capabilities and versatility to the C++ programming language.

2023_02_Copy-of-Feature-Image-TemplatesJJ-6.jpg

This tutorial introduces pointers in C++ and discusses the methods to pass arguments to a function. We will be covering the following sections:

What are Pointers in C++?

Pointers are a fundamental concept in C++ programming. They allow you to manipulate memory directly by storing the memory addresses of variables and data structures. A pointer is a variable that holds the memory address of another variable.

Here’s how you can declare a pointer in C++:

 
int x = 10;
int *ptr = &x;
Copy code

In this example, x is an integer variable that holds the value 10. The line int *ptr = &x; declares a pointer ptr to an integer and initializes it with the address of x using the & operator.

You can access the value stored at the memory location pointed to by a pointer using the * operator, also known as the dereference operator. For example:

 
cout << *ptr << endl;
Copy code

This will output the value 10 to the console.

Pointers are used for many purposes in C++, including dynamic memory allocation, passing arguments to functions by reference, and creating linked data structures such as linked lists and trees.

Explore free C++ courses

Reference Operator and Dereference Operator

In C++, two important operators are used with pointers: the reference operator (&) and the dereference operator (*).

Reference Operator

The reference operator(&) is used to obtain the memory address of a variable. For example:

 
int x = 10;
int *ptr = &x;
Copy code

In this example, the reference operator & is used to get the memory address of x and store it in the pointer ptr.

Dereference Operator

The dereference operator (*) is used to access the value stored at the memory location pointed to by a pointer. For example:

 
cout << *ptr << endl;
Copy code

This will output the value stored in x, which is 10.

It’s important to note that using the dereference operator on an uninitialized pointer can cause a segmentation fault, which is a type of runtime error that occurs when the program tries to access memory that it is not allowed to access.

Pointer Declaration Syntax

Pointers in C++ are declared using the following syntax:

 
data_type *pointer_name;
Copy code

The asterisk * symbol is used to indicate that a variable is a pointer. It can be placed before or after the data type and before the pointer name.

When declaring multiple pointers in a single line, the asterisk symbol must be placed before each pointer name, like this:

 
int *var1, *var2; // Both var1 and var2 are pointers
Copy code

or

 
int *var1, var2; // var1 is a pointer, var2 is an integer variable
Copy code

How to Use Pointers in C++?

To use pointers in C++, you must perform the following steps:

  1. Declare a pointer variable: Declare a pointer variable with a specified data type like any other variable in C++.
  2. Assign the address of a variable to the pointer: To assign the memory address of another variable to a pointer, use the address-of operator &. This operator returns the memory address of the variable it precedes.
  3. Access the value stored at the address: To access the value stored at the memory address, use the dereference operator *. This operator returns the value stored at the memory address the pointer holds.

Here is an example:

 
#include
\n \n <iostream>\n \n
\n \n
using namespace std;\n \n
\n \n
int main() {\n \n
int x = 10;\n \n
int *ptr;\n \n
ptr = &x;\n \n
\n \n
cout << "The value of x: " << x << endl;\n \n
cout << "The value of *ptr: " << *ptr << endl;\n \n
\n \n
return 0;\n \n
}\n \n
\n \n </iostream>
Copy code

Output:

 
The value of x: 10
The value of *ptr: 10
Copy code

In this example, we declare an integer x and assign it 10. Then, we declare a pointer ptr of type int, and use the address-of operator & to assign the memory address of x to ptr. Finally, we use the dereference operator * to access the value stored at the memory address that ptr holds, which is 10.

Here’s a table that lists the symbols commonly used with pointers in C++:

Symbol Purpose
& Address-of operator. Returns the memory address of a variable.
* Dereference operator. Returns the value stored at the memory address pointed to by a pointer.
new Dynamic memory allocation operator. Allocates memory dynamically in a heap.
delete Deallocation operator. Releases the memory dynamically allocated using the new operator.

Ways to Pass Arguments to a Function

There are three main ways to pass arguments to a function in C++:

  • By value
  • By reference,
  • By address (pointer)

Let’s discuss each method in detail:

Pass by value

This is the default method of passing arguments to a function. In this method, the values of the arguments are passed to the function, and a new set of variables is created in the function, each with the same name as the arguments. Any changes made to these variables within the function do not affect the original variables in the caller function.

Example:

 
#include
\n \n <iostream>\n \n
\n \n
using namespace std;\n \n
\n \n
void print_square(int num) {\n \n
num = num * num;\n \n
cout << "The square of the number is: " << num << endl;\n \n
}\n \n
\n \n
int main() {\n \n
int x = 10;\n \n
cout << "Before calling the function: " << x << endl;\n \n
print_square(x);\n \n
cout << "After calling the function: " << x << endl;\n \n
return 0;\n \n
}\n \n
\n \n </iostream>
Copy code

Output:

 
Before calling the function: 10
The square of the number is: 100
After calling the function: 10
Copy code
Check Palindrome in C++
Check Palindrome in C++
Learn numerous techniques for determining whether a string is a palindrome. Bypassing spaces, punctuation, and capitalization, you may quickly determine whether a string is a palindrome by using recursion and...read more
Understanding Multiset in C++
Understanding Multiset in C++
Here you will understand the concept of Multiset in C++. We have covered how to create multiset and its member functions using relevant examples. Let’s understand.
Binary Representation of Numbers using C++
Binary Representation of Numbers using C++
Bitset class and Bitwise Operator in C++ can convert a given number from decimal to binary. Let’s understand the Binary Representation of Numbers with relevant examples.

Pass by reference

This method of passing arguments to a function allows the changes made to the argument within the function to reflect in the caller function. In this method, the memory address of the argument is passed to the function, rather than its value. To pass an argument by reference, we use the reference operator & before the argument name.

Example:

 
#include
\n \n <iostream>\n \n
\n \n
using namespace std;\n \n
\n \n
void square(int &num) {\n \n
num = num * num;\n \n
cout << "The square of the number is: " << num << endl;\n \n
}\n \n
\n \n
int main() {\n \n
int x = 10;\n \n
cout << "Before calling the function: " << x << endl;\n \n
square(x);\n \n
cout << "After calling the function: " << x << endl;\n \n
return 0;\n \n
}\n \n
\n \n </iostream>
Copy code

Output:

 
Before calling the function: 10
The square of the number is: 100
After calling the function: 100
Copy code

Pass by address (pointer)

This method of passing arguments to a function is similar to pass by reference, but it uses pointers instead of references. In this method, the memory address of the argument is passed to the function using a pointer.

Example:

 
#include
\n \n <iostream>\n \n
\n \n
using namespace std;\n \n
\n \n
void square(int *ptr) {\n \n
*ptr = (*ptr) * (*ptr);\n \n
cout << "The square of the number is: " << *ptr << endl;\n \n
}\n \n
\n \n
int main() {\n \n
int x = 10;\n \n
cout << "Before calling the function: " << x << endl;\n \n
square(&x);\n \n
cout << "After calling the function: " << x << endl;\n \n
return 0;\n \n
}\n \n
\n \n </iostream>
Copy code

Output:

 
Before calling the function: 10
The square of the number is: 100
After calling the function: 100
Copy code

Choosing the right method of passing arguments to a function depends on the specific requirements of the task at hand.

Endnotes

Choosing the right method of passing arguments to a function depends on the specific requirements of the task at hand. Hope this article helped you grasp the concept of pointers in C++. Explore our C++ articles to find out more about the language and consolidate your knowledge of the fundamentals.  

FAQs

What is a Pointer in C++?

A pointer in C++ is a variable that stores the memory address of another variable.

Why do we need pointers in C++?

Pointers are useful in C++ because they allow us to manipulate memory directly, and they provide a way to pass data between functions efficiently.

How do you declare a pointer in C++?

To declare a pointer in C++, use the asterisk (*) symbol before the variable name, like this: int *myPointer;

How do you initialize a pointer in C++?

To initialize a pointer in C++, you can assign it the memory address of another variable, like this: int *myPointer = &myVariable;

How do you dereference a pointer in C++?

To dereference a pointer in C++, use the asterisk (*) symbol before the pointer variable name, like this: *myPointer;

What is the null pointer in C++?

The null pointer in C++ is a special pointer value that indicates that the pointer is not pointing to any valid memory address. It is represented by the keyword "nullptr".

How do you pass a pointer to a function in C++?

To pass a pointer to a function in C++, you need to declare the function parameter as a pointer type, like this: void myFunction(int *myPointer);

How do you allocate memory using pointers in C++?

To allocate memory using pointers in C++, use the "new" keyword to dynamically allocate memory, like this: int *myPointer = new int;

How do you deallocate memory using pointers in C++?

To deallocate memory using pointers in C++, use the "delete" keyword to free the dynamically allocated memory, like this: delete myPointer;

What are some common mistakes when using pointers in C++?

Common mistakes when using pointers in C++ include dereferencing uninitialized pointers, dereferencing null pointers, accessing memory that has already been deallocated, and memory leaks caused by failing to deallocate memory.

About the Author

This is a collection of insightful articles from domain experts in the fields of Cloud Computing, DevOps, AWS, Data Science, Machine Learning, AI, and Natural Language Processing. The range of topics caters to upski... Read Full Bio