Pointers in C Language

Introduction

Pointers are a part of the C language and make the C language more powerful. The following arre some features ot them:

  • A pointer mainly represents a data structure.
  • It changes values of an actual argument passed to the function (“call by reference”).
  • It is also for working with memory allocation dynamically.
  • It is efficiently used with integer arrays and character arrays.
  • A pointer always stores a memory address, not data values.
  • A pointer holds the value aa an address.

Declaration

A pointer variable must be declared before use. The syntax for a pointer declaration is as follows.

    Int *a;
    Double *b;

Now a is a “pointer to an integer”and b is a “pointer to a double”.

The prefix * defines the variable as a pointer.

Example

  1. Int *a;  
  2. Int b;  
  3. a=&b;  
Here a contains the memory address of the variable b.

Arithmetic operation are limited to the following for pointers:
  1. Integers and pointers can be added and subtracted.
  2. Incremented and decremented
  3. In addition, pointers can be assigned to each other

Example

  1. Int *a,*b;  
  2. a=a+5;  
  3. b=a;  
Call by Reference

Using call by reference means that a parameter is sent to the function in the form of an address location.
  1. #include<stdio.h>  
  2. Void swap(int *p , int *q);  
  3. main()  
  4. {  
  5.    Int i=3,j=5;  
  6.    swap( &I , &j ); //sentind address of I and j variables  
  7.    printf("After swap, i=%d j=%d\n" ,I ,j );  
  8.    getch();  
  9.    return 0;  
  10. }  
  11. Void swap(int *p, int *q)  
  12. {   
  13.    Int temp;   
  14.    temp=*p;   
  15.    *p=*q;  
  16.    *q=temp;  
  17. }  
Output

    After swap, I=5 j=3

Pointers and arrays

A pointer always contains the base address of the memory location that makes up an entire array.

Declaration

    Scanf(“%s” ,name);

Example

  1. Int a[5];
  2. a[5]=10;
  3. *(a+5)=56;

All of those are the same thing.

Examples

    1. Int a[100] , I , *p , sum=0;    
    2. for (i=0 ; i<100 ;++I )     
    3. Sum += a[i];  
    1. int a[100] , I , *p , sum=0;  
    2. for (i=0 ; i<100 ; ++I )  
    3. Sum += *( a + I ); 
    1. int a[100] , I , *p , sum=0;    
    2. for ( p=a ; p<&a[100] ; ++p )     
    3. sum += *p;  
    The following shows an array as function arguments:
    1. double sum(double *dp , int n )  
    2. {  
    3.    Int I ;  
    4.    Double res=0.0 ;  
    5.    for ( i=0 ; i<n ; ++I )  
    6.    res += *( dp + I ) ;  
    7.    return res;  
    8. }  

That function needs a starting address in the array and the number of elements to be summed together.

Pointers and Character Strings

  1. #include<stdio.h>  
  2. main()  
  3. {  
  4.    Char *cp ;   
  5.    cp = "Neeraj Kumar";   
  6.    printf("%c\n" , *cp );  
  7.    printf("%c\n" , *( cp + 7 ));  
  8.    return 0;  
  9. }  
Output

    N
    K

We can use pointers to work with character strings. The value of the string constant address is the base address of the character array.

Thank you.

Up Next
    Ebook Download
    View all
    Learn
    View all