-
Display the address of an integer variable and one float variable.
#include <stdio.h>
int main(void){
int *poti; // integer pointer
float *potf; // float pointer
int i1=3;
poti=&i1; // Storing the address of i1
printf("value of integer : %d \n",*poti);
float f1=5.6;
potf=&f1; // Storing the address of f1
printf("value of Float : %f \n",*potf);
return 0;
}
-
Declare a long variable and store its address in a pointer
#include <stdio.h>
int main(void){
long *pot_l; // integer pointer
long i=2147483647;
pot_l=&i; // Storing the address of i1
printf("value of long : : %ld \n",*pot_l);
return 0;
}
value of long : : 2147483647
-
Declare a string variable and store its address in a pointer . Display the string along with its address.
#include <stdio.h>
int main(void){
char *potch; // string pointer
char str[10]="plus2net";
potch=str;
while(*potch != '\0'){
printf("Address : %d , value :%c \n",potch,*potch);
potch++;
}
// to display the string in one line
potch=str; // to point to first element
while(*potch != '\0'){
printf("%c",*potch);
potch++;
}
return 0;
}
Output
Address : 6487552 , value :p
Address : 6487553 , value :l
Address : 6487554 , value :u
Address : 6487555 , value :s
Address : 6487556 , value :2
Address : 6487557 , value :n
Address : 6487558 , value :e
Address : 6487559 , value :t
plus2net
-
Find sum of two numbers using pointers
int *pot1,*pot2,sum, num1,num2;
num1=100;
num2=200;
pot1=&num1;
pot2=&num2;
sum= *pot1 + *pot2;
printf("sum =%d ",sum);
Output
sum=300
-
Take two user input numbers and swap them using pointer and display.
int num1,num2;
int *pot1,*pot2,*pot3; // Pointer of an integer //
printf("Number 1 : ");
scanf("%d",&num1); // read the first number
printf("Number 2 : ");
scanf("%d",&num2); // read the second number
pot1=&num1; // Store the address of first number
pot2=&num2; // Store the address of second number
pot3=pot2; // Keep the address in another pointer
pot2=pot1; // swap
pot1=pot3; // swap
printf("value of Number 1 : %d \n: ", *pot1);
printf("value of Number 2 : %d ", *pot2);
-
Pass two numbers to a function using pointer and display highest value.
#include <stdio.h>
int high(int *pot1,int *pot2){
if(*pot1>*pot2){ // check which is highest
return *pot1; // return value of pot1 if it is high
}else{
return *pot2; // return value of pot2
}
}
int main(void){
int i=15,j=-15,*pot1,*pot2;
pot1=&i; // store address of i in pointer pot1
pot2=&j; // store address of j in pointer pot2
// pass the values to function high() and get the highest
printf("Highest = %d \n",high(pot1,pot2));
return 0;
}
Highest = 15
-
Create one array and pass the array to a function by using pointer and then display all elements.
#include <stdio.h>
int array_disp(int *pot){
int k=0;
for(k=0;k<5;k++){
printf("Element : %d \n", *pot);
pot++;
}
}
int main(void){
int j[5]={1,2,3,4,5};
int *pot_main;
pot_main=&j[0];
array_disp(pot_main);
return 0;
}
Element : 1
Element : 2
Element : 3
Element : 4
Element : 5
-
In above question increase the value of elements by 2 inside the function and then display.
We can increase the value of the pointer by 2 and display. This is the only change in script.
printf("Element : %d \n", *pot+2);
-
Display highest and lowest numbers in an array using pointer.
#include <stdio.h>
int main(void){
int i,num1[5]={-8,40,-5 ,6 ,7};
int *pot; // Pointer of an integer //
pot=&num1[0]; // assign address of num to pot //
int high=num1[0],low=num1[0];
for(i=0;i<5;i++){
if(high<*pot){
high=*pot;
}
if(low>*pot){
low=*pot;
}
pot++;
}
printf("Highest and lowest values are %d , %d ",high,low);
}
Highest and lowest values are 40 , -8
-
Sort an array using pointers
#include <stdio.h>
int main(void){
int num[]={-34,14,-11,15,0,-20};
int i=0,j=0;
int x=0;
int *pot=&num[0];
int *pot2=&num[0];
for(i=0;i<6;i++){
pot=&num[i];
for(j=i+1;j<6;j++){
pot2=&num[j];
// change below line to less than to get descending order
if(*pot>*pot2){
x=*pot;
*pot=*pot2;
*pot2=x;
}
}
}
//// display the array elements//////
pot=&num[0];
for(i=0;i<6;i++){
printf(" %d \n",*pot);
pot++;
}
}
-34
-20
-11
0
14
15
-
Write a program to print a string in revers using pointer
#include <stdio.h>
#include <string.h>
int main(void){
char *potch; // Char pointer
char str[30]="welcome to plus2net";
int j,length;
potch=&str[0];
length=strlen(str);
for(j=length-1;j>=0;j--){
printf("%c",*(potch+j));
}
return 0;
}
Output
ten2sulp ot emoclew
-
Print the middle char of a string, if there are even numbers of chars then print the next char from the middle.
#include <stdio.h>
#include <string.h>
int main(void){
char *potch; // Char pointer
char str[30]="plus2net";
int j,length;
potch=&str[0];
length=strlen(str); // length of the string
printf("%c",*(potch+length/2));
return 0;
}
Output
2
-
Create a function to receive an pointer of an array and a number to search. This function will return 1 if the number is found inside the array otherwise return 0.
#include <stdio.h>
int array_search(int *pot,int num1){
int k=0;
for(k=0;k<5;k++){
if(num1==*pot){
return 1;
break; // No need to further continue
}
pot++;
}
return 0;
}
int main(void){
int j[5]={1,2,3,4,5}; // input array
int *pot_main;
int num1=7; // Number to be checked for presence
pot_main=&j[0];
if(array_search(pot_main,num1)==1){
printf("Yes available");
}else{
printf("Not available");
}
return 0;
}