Example programs showing pointer assignment, addition and subtractions:
1.’C’ program to read and print a dynamic array of the user required size:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main(),
{
int *arr, size, i;
/* arr is a pointer to store address of dynamically allocated memory*/
clrscr();
printf(“Enter the size of array :”);
scanf(“%d”,&size);
arr=(int*)malloc(size*sizeof(int));
/* dynamic memory allocation, pointer assignment operation */
If(arr= = NULL)
{
printf(“Memory allocation error!”);
exit(0); /*to terminate program execution */
} /*end of if*/
printf(“\n Enter array elements:”);
for(i=0;i<size;i++)
scanf(“%d”,arr+i); /*pointer
addition */
printf(“\nThe array is:\n”);
for(i=0;i<size;i++)
printf(“%d”,*(arr+i)); /*pointer
addition */
} /* end of main() */
NOTE: The array elements can also be referred as arr[i],
Where ’i’ is the index of the respective element.
The same program 1 for reading and displaying dynamic array can also be written with pointer subtraction as follows:
To read the array and display the array using pointer subtraction operation, the address of the last element is stored in a pointer variable and it is update accordingly by subtracting the respective index of the element to be read or displayed.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main(),
{
int *arr, size, i,*p;
/* arr is a pointer to store address of dynamically allocated memory*/
clrscr();
printf(“Enter the size of array :”);
scanf(“%d”,&size);
arr=(int*)malloc(size*sizeof(int));
/* dynamic memory allocation, pointer assignment operation */
if(arr= = NULL)
{
printf(“Memory allocation error!”);
exit(0); /*to terminate program execution */
} /*end of if*/
p=&a[size-1];/*address of the last element */
printf(“\n Enter array elements:”);
for(i=size-1;i>=0;i--)
scanf(“%d”,p-i); /*pointer subtraction*/
p=&a[size-1]; /*pointer assignment */
printf(“\nThe array is:\n”);
for(i=0;i<size;i++)
printf(“%d”,*(p-i)); /*pointer subtraction*/
} /* end of main() */
2.’C’ program to implement to searching using dynamic array:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main(),
{
float *arr, num; /*array of real numbers */
int size, i;
clrscr();
printf(“Enter the size of array :”);
scanf(“%d”,&size);
arr=(float*)malloc(size*sizeof(float));
if(arr = = NULL)
{
printf(Memory allocation error!);
exit(0); /*to terminate program execution */
} /* end of it*/
printf(“\nEnter array elements:”);
for(i=0;i<size;i++)
scanf(“%f”,arr+i); /*pointer addition */
printf(“Enter the real number to search in array:”);
scanf(“%f”,&num);
for(i=0;i<size;i++)
if(num==*(arr+i))
break; /*to terminate for loop */
if(i==size) /*if i=size then ‘break’ is not executed.
Element comparison is over */
printf(“Search unsuccessful…”);
else
printf(“Search successful…”);
} /*end of main() */
3.’C’ program to count the frequency of a number in a dynamic array.
#include<stdio.h>#include<conio.h>
#include<stdlib.h>
main(),
{
float *arr, num; /*array of real numbers */
int size, i, count=0;
printf(“Enter the size of array :”);
scanf(“%d”,&size);
arr=(float*)malloc(size*sizeof(float));
if(arr == NULL)
{
printf(Memory allocation error!);
exit(0); /*to terminate program execution */
} /* end of it*/
printf(“\nEnter array elements:”);
for(i=0;i<size;i++)
scanf(“%f”,arr+i); /*pointer addition */
printf(“Enter the number, the freq. of which is freq.:”);
scanf(“%f”,&num);
/*finding the frequency */
for(i=0;i<size;i++)
if(num==*(arr=i))
count++; /*count incremented by 1, whenever the num is equal to
the array element */
printf(“\n Frequency of number %f is %d”,num,count);
} /*end of main() */
4.’C’ program to find the number of prime numbers stored in a dynamic array.
#include<stdio.h>#include<conio.h>
#include<stdlib.h>
int prime(int num)
{
int i;
for(i=2;i<=num/2;i++)
if(num%i == 0) /*Non-prime */
return 0;
return 1; /*prime */
}
main()
{
int *arr, size, i, count=0;
printf(“Enter the size of array :”);
scanf(“%d”,&size);
arr=(int*)malloc(size*sizeof(int));
if(arr == NULL)
{
printf(“Memory allocation error!”);
exit(0); /*to terminate program execution */
} /* end of it*/
printf(“\nEnter array elements:”);
for(i=0;I<size;i++)
scanf(“%d”,arr+i); /*pointer addition */
for(i=0;i<size;i++)
if(prime(*(arr+i)) ==1)
count++;
printf(“\nNumber of primes = %d”,count);
} /*end of main() *