C Pointers

In this lesson, you will learn about pointers in C Programming, and their usage, along with examples to better understand the topic.

What are pointers?

A Pointer is a strong attribute in C programming. It is a variable used to reserve the address of some other variable. The Pointer can be of any data type like int, float, etc.

The pointer concept can be a bit tricky to understand. The simplest form of pointers, for example, is a variable ‘a’ of int type in your program, and &a is the address of that variable in the memory.

Basic Syntax

datatype* pointer;

How to declare Pointers in C?

Pointer stores the address rather than values.

int* ptr;

In the above example, ptr is the Pointer of int type.

When assigning values to a pointer, use the reference variable & with it.

int* ptr;
int mathMarks = 100;
ptr = &mathMarks;

ptr will get the address of mathMarks variable so ptr holds now 100. If you want to print ptr value, use * with ptr. It is also called dereference operator.

int *ptr;
int mathMarks = 100;
ptr = &mathMarks;
printf ("%d", *ptr);

Example of Pointers in C

// Example of pointer
#include <stdio.h>
int main ()
{
  int marks = 15;
  printf ("marks: %d\n", marks);
  // pointer &marks gives the address of variable marks in memory
  printf ("pointer of marks: %p", &marks);	//%p is the format specifier of pointer
  return 0;
}

Output

marks: 15
pointer of marks: 0x7ffd78e26af4

Example of assigning value to pointer in C

// Example of the pointer after assigning value to it
#include <stdio.h>
int main ()
{
  int *ptr;
  int marks = 15;
  printf ("Value of marks: %d\n", marks);
  ptr = &marks;
  // pointer &marks gives the address of variable marks in memory
  printf ("value of pointer of ptr: %d", *ptr);
  return 0;
}

Output

Value of marks: 15
value of pointer of ptr: 15

Change the value of a Pointer in C

You can change the value of Pointer by changing the variable value assigned to it. See the example below; marks initially assigned a value of 75. Pointer ptr holds the same address of marks after this statement

ptr = &marks;

In the next statement, marks have been changed to 100. As ptr has the same address of marks, so ptr value will become 100.

int *ptr, marks;
marks = 75;
ptr = &marks;
marks = 100;

Example of changing the value of  a pointer in C

// Example of pointer after changing its value
#include <stdio.h>
int main ()
{
  int *ptr, marks;
  marks = 75;
  ptr = &marks;
  marks = 100;
  printf ("value of marks: %d\n", marks);
  printf ("value of pointer ptr: %d", *ptr);
  return 0;
}

Output

value of marks: 100
value of pointer ptr: 100

In the next lesson, you will learn about memory management In C.