# Pointers

By Bipin Tiwari

Introduction to Pointer

A pointer is special type of a variable. It is special because it contains a memory address instead of values. A pointer variable is declared with specific data type, like any other normal variable so that it will work only with memory address of a given type.

data-type   *  variable_ name;

### Example

Write a program to read marks of 10 students secured in a subject and store them in an array using pointer notation. Calculate average marks of them and display on screen.

 int main()

{

int marks [10] , i, sum=0;

float avg;

print f("Enter marks of each student");

for(i=0; i<10; i++)

{

scan f("%d", marks+i);

sum+=*(marks+i);

}

avg=sum/10;

print f("The average is %f", avg);

getch ();

return 0;

Output

Enter marks of each student:

56   90    65   45    34    23    89    67    56    78

The average is =60.00000

## Dynamic Memory Allocation(DMA)

The process of allocating and freeing memory in a program  at run time is known as Dynamic Memory Allocation (DMA).

### i. malloc () function

It allocates requested size of bytes and returns a pointer to the first byte of the allocated space to the program.

 ptr = (data_ type*) malloc (size_ of_ block);

### Example

x=(int*) malloc (100* sizeof (int));

### ii. calloc() function

ptr = (data_ type*) calloc(no_ of_ blocks, size_ of_ each_ block);

### Example

x= (int*) calloc (5, 10*sizeof (int));

                      x= (int*) calloc( 5, 20);

### iii. free() function

free (ptr)

### iv. realloc();

ptr= realloc (ptr, newsize)

## Example

write a program to define two matrices of order m×n using pointer notation. Read elements of the matrices from user and add them using pointer.

#define m 2

#define n 3

int main()

{

int (*a) [n], (*b) [n], *(sum) [n], i, j;

print f ("Enter first matrix");

for(i=0; i<m; i++)

for(j=0; j<n; j++)

scan f("%d", *(a+i)+j);

print f ("Enter second matrix");

for(i=0; i<m; i++)

for(j=0; j<n; j++)

scan f("%d", *(b+i)+j);

print f("The sum matrix is");

for(i=0; i<m; i++)

{

for(j=0; j<n; j++)

{

*(*(sum+i)+j)= *(*(a+i)+j)+ *(*(b+i)+j);

print f("%d"), *(*(sum+i)+j));

}

print f("\n");

}

getch ();

return 0;

}

Output

Enter first matrix:

1    2    3

3    4     6

Enter second matrix:

4    6     7

7    4     2

The  sum matrix  is:

5    8     10

10   8     8

Important Questions