...

/

Changing the Value of Pointers Passed as Arguments

Changing the Value of Pointers Passed as Arguments

Get introduced to the concept of pointers to pointers.

Introduction

Our goal is to change the value of a pointer passed as an argument to a function. To be clear, we don’t want to change the variable that the pointers point to (with the dereference operator). We want to change the pointer itself and make it point somewhere else.

As a starting point, we’ll write a function called setToNULL, which receives an int pointer and sets it to NULL.

First attempt

Well, if we want to set a pointer to NULL, we usually do:

pointer = NULL;

Therefore, let’s try the same thing, but in a function. We’ll create a pointer, assign it a valid memory address, and then call a function to try to set it to NULL.

Press + to interact
#include <stdio.h>
void setToNULL(int *ptr)
{
ptr = NULL;
}
int main()
{
int x = 5;
int *ptr = &x;
printf("[Before setToNULL]ptr holds the address: %p\n", ptr);
setToNULL(ptr);
printf("[After setToNULL]ptr holds the address: %p\n", ptr);
return 0;
}

Well, this attempt is a failure. Here’s an example of the output (the address may be different for you):

[Before setToNULL]ptr holds the address: 0x7ffcc1566ee4
[After setToNULL]ptr holds the address: 0x7ffcc1566ee4
...