One common place where pointers are helpful is when you are writing functions. Functions take their arguments 'by value', which means that they get a copy of what is passed in and if a function assigns a new value to one of its arguments that will not affect the caller. This means that you couldn't write a "doubling" function like this:

void doubling(int x)
{
    x = x * 2;
}

This makes sense because otherwise what would the program do if you called doubling like this:

doubling(5);

Pointers provide a tool for solving this problem because they let you write functions that take the address of a variable, for example:

void doubling2(int *x)
{
    (*x) = (*x) * 2; 
}

The function above takes the address of an integer as its argument. The one line in the function body dereferences that address twice: on the left-hand side of the equal sign we are storing into that address and on the right-hand side we are getting the integer value from that address and then multiply it by 2. The end result is that the value found at that address is now doubled.

As an aside, when we want to call this new function we can't pass in a literal value (e.g. doubling2(5)) as it won't compile because we are not properly giving the function an address. One way to give it an address would look like this:

int a = 5;
doubling2(&a);

The end result of this would be that our variable a would contain 10.

Answer from tuckermi on Stack Overflow
🌐
W3Schools
w3schools.com › c › c_pointers.php
C Pointers
A pointer variable points to a data type (like int) of the same type, and is created with the * operator.
🌐
GeeksforGeeks
geeksforgeeks.org › c language › c-pointers
Pointers in C - GeeksforGeeks
A pointer is a variable that stores the memory address of another variable. Instead of holding a direct value, it holds the address where the value is stored in memory. It is the backbone of low-level memory manipulation in C.
Published   April 22, 2026
Discussions

Why Use Pointers in C? - Stack Overflow
I'm still wondering why in C you can't simply set something to be another thing using plain variables. A variable itself is a pointer to data, is it not? So why make pointers point to the data in... More on stackoverflow.com
🌐 stackoverflow.com
What's the use of pointers-to-pointers?
Well a pointer is also data, so it's useful everywhere where having a pointer to data is useful. One usecase I find kinda neat is for linked list algorithms. See https://github.com/mkirchner/linked-list-good-taste More on reddit.com
🌐 r/C_Programming
30
47
May 11, 2023
What is the use of pointers in C?
Keep using it and you’ll quickly find out More on reddit.com
🌐 r/C_Programming
42
0
April 10, 2024
Genuine question: What’s hard about pointers?
Try using them for implementing a simple bubble sort algorithm, Then try doing the same without pointers. You'll know the difference. More on reddit.com
🌐 r/learnprogramming
38
28
February 14, 2022
🌐
SDSU
edoras.sdsu.edu › doc › c › pointers-1.2.2
Everything you need to know about pointers in C
The pointer has a type, too, by the way. Its type is int. Thus it is an ‘int pointer’ (a pointer to int). An int **’s type is int * (it points to a pointer to int). The use of pointers to pointers is called multiple indirection.
🌐
Yale University
cs.yale.edu › homes › aspnes › pinewiki › C(2f)Pointers.html
C/Pointers
When the CPU wants to fetch a value ... 264 distinct 8-bit locations in the memory. These integers can be manipulated like any other integer; in C, they appear as pointers, a family of types that can be passed as arguments, stored in variables, returned from functions, ...
🌐
Medium
lorenzopiombini.medium.com › pointers-in-c-2ad210278a51
Pointers in C. a Beginner guide. | by Lorenzo Piombini | Medium
September 13, 2024 - That is why pointers are extremely powerful, you can take advantage of this in many ways, a perfect example is that, with pointers you can access data outside of a function, due to C pass by value inner working, when using functions, the parameters that you pass, are copied and they are visible only to the function, whatever happen inside the function’s body, won’t change anything at the caller level, you can do a workaround with pointers, but be careful, you will read somewhere that using pointers will change the C behavior of pass by value, that is FALSE!!
Find elsewhere
🌐
Medium
michaeladev.medium.com › pointers-in-c-a-beginners-guide-9c54ae6e59bb
Pointers in C: A Beginner’s guide | by Michael Appiah Dankwah | Medium
February 1, 2023 - By the end of the next few sections, I guarantee you will be a pro. What is a pointer? A pointer is a variable that stores a memory address. Let’s declare variables in our main function.
🌐
TutorialsPoint
tutorialspoint.com › cprogramming › c_pointers.htm
Pointers in C
C pointer is the derived data type that is used to store the address of another variable and can also be used to access and manipulate the variable's data stored at that location.
🌐
freeCodeCamp
freecodecamp.org › news › pointers-in-c-programming
How to Use Pointers in C Programming
May 3, 2023 - Once we have a pointer that points to a specific memory location, we can access or modify the value stored at that location by dereferencing the pointer. To dereference a pointer, we use the asterisk * symbol again, but this time in front of the pointer variable itself.
Top answer
1 of 4
42

One common place where pointers are helpful is when you are writing functions. Functions take their arguments 'by value', which means that they get a copy of what is passed in and if a function assigns a new value to one of its arguments that will not affect the caller. This means that you couldn't write a "doubling" function like this:

void doubling(int x)
{
    x = x * 2;
}

This makes sense because otherwise what would the program do if you called doubling like this:

doubling(5);

Pointers provide a tool for solving this problem because they let you write functions that take the address of a variable, for example:

void doubling2(int *x)
{
    (*x) = (*x) * 2; 
}

The function above takes the address of an integer as its argument. The one line in the function body dereferences that address twice: on the left-hand side of the equal sign we are storing into that address and on the right-hand side we are getting the integer value from that address and then multiply it by 2. The end result is that the value found at that address is now doubled.

As an aside, when we want to call this new function we can't pass in a literal value (e.g. doubling2(5)) as it won't compile because we are not properly giving the function an address. One way to give it an address would look like this:

int a = 5;
doubling2(&a);

The end result of this would be that our variable a would contain 10.

2 of 4
20

A variable itself is a pointer to data

No, it is not. A variable represents an object, an lvalue. The concept of lvalue is fundamentally different from the concept of a pointer. You seem to be mixing the two.

In C it is not possible to "rebind" an lvalue to make it "point" to a different location in memory. The binding between lvalues and their memory locations is determined and fixed at compile time. It is not always 100% specific (e.g. absolute location of a local variable is not known at compile time), but it is sufficiently specific to make it non-user-adjustable at run time.

The whole idea of a pointer is that its value is generally determined at run time and can be made to point to different memory locations at run time.

🌐
Medium
medium.com › nerd-for-tech › the-basics-of-pointers-in-c-1cb9b4ed3123
The Basics of Pointers in C. C Pointers are a type of variable used… | by Matthew Clark | Nerd For Tech | Medium
May 20, 2024 - The Basics of Pointers in C C Pointers are a type of variable used to store memory addresses of other variables. These pointers are typed meaning they will store the specified type and can be …
🌐
GitHub
github.com › nlohmann › json
GitHub - nlohmann/json: JSON for Modern C++ · GitHub
Christian Deneke added a const version of json_pointer::back. Julien Hamaide made the items() function work with custom string types. Evan Nemerson updated fixed a bug in Hedley and updated this library accordingly.
Starred by 50K users
Forked by 7.4K users
Languages   C++ 96.9% | CMake 2.0% | Python 0.6% | Makefile 0.3% | Starlark 0.1% | Jinja 0.1%
🌐
WsCube Tech
wscubetech.com › resources › c-programming › pointers
Pointers in C Language (Uses, Types, Examples)
March 17, 2026 - Learn in this tutorial about pointers in C with types and examples. Understand their basics, operations, and uses for better memory handling in C programming.
🌐
The Tufts Daily
tuftsdaily.com › article › 2026 › 02 › tufts-mens-basketball-advances-to-nescac-semifinals-with-win-over-colby
Tufts men’s basketball advances to NESCAC semifinals with win over Colby - The Tufts Daily
February 25, 2026 - The game proved to be incredibly physical, with Jumbos and Mules alike blocking heavily and firing shots up from under the net. Tufts landed a reverse shot around the back, taking the game 9–3, to which Colby responded with another 3-pointer, 9–6. Both teams were relentless, and the Jumbos ...
🌐
Reddit
reddit.com › r/c_programming › what's the use of pointers-to-pointers?
r/C_Programming on Reddit: What's the use of pointers-to-pointers?
May 11, 2023 -

I already get the idea of plain old pointers to data. All a pointer is is a memory address where some data lives. The plain old pointers are generally used to iterate through things like arrays and tree nodes and to access data on the heap. But where are pointers-to-pointers actually useful (or triple pointers, etc.)? The only places I can think of where they are useful are for multidimentional arrays and navigating through lists of malloc'ed objects. Are there any other use cases where just a regular old pointer wouldn't be enough?

🌐
Programiz
programiz.com › c-programming › c-pointers
C Pointers (With Examples)
Address of c: 2686784 Value of c: 22 Address of pointer pc: 2686784 Content of pointer pc: 22 Address of pointer pc: 2686784 Content of pointer pc: 11 Address of c: 2686784 Value of c: 2 ... int* pc, c; Here, a pointer pc and a normal variable c, both of type int, is created.
🌐
NBA
nba.com › home › nba players › cason wallace
Cason Wallace | Guard | Oklahoma City Thunder | NBA.com
3 weeks ago - Wallace logged 17 points (6-10 FG, 5-9 3Pt), seven rebounds, four assists, one steal and one block over 36 minutes during the Thunder's 111-103 loss to the Spurs in Game 7 of the Western Conference Finals on Saturday.
🌐
Reddit
reddit.com › r/c_programming › what is the use of pointers in c?
r/C_Programming on Reddit: What is the use of pointers in C?
April 10, 2024 - So as someone who has around 3 months of casual C programming under my belt (learning through videos, not professionally), the best explanation for pointesr I've heard that helped me figure out how to use them was to treat pointers as an array. With a normal array you define a set size, but for pointers you define the size of the array by asking for a specific number of bytes to be stored on the heap using the malloc. But why use a pointer instead of a normal array?