Pointers

By Bipin Tiwari

 Important Questions

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
Comments
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments