Search⌘ K

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.

C
#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
...