0% found this document useful (0 votes)
3 views12 pages

C Pointer Programs

This document is a collection of C programming practice programs focused on pointers, covering 8 topics with 40 programs and their outputs. It includes examples of basic pointers, null pointers, double pointers, function pointers, array-pointer relations, pointer arithmetic, swapping using pointers, and strings with pointers. Each section provides code snippets along with their expected outputs to illustrate the concepts effectively.

Uploaded by

Pushpendra Singh
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views12 pages

C Pointer Programs

This document is a collection of C programming practice programs focused on pointers, covering 8 topics with 40 programs and their outputs. It includes examples of basic pointers, null pointers, double pointers, function pointers, array-pointer relations, pointer arithmetic, swapping using pointers, and strings with pointers. Each section provides code snippets along with their expected outputs to illustrate the concepts effectively.

Uploaded by

Pushpendra Singh
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

C Pointers

Practice Programs Collection


8 Topics • 40 Programs • With Output

1. Basic Pointer (Address & Dereference)

1.1 Basic address & dereference

#include <stdio.h>
int main() {
int a = 10;
int *p = &a; // p mein a ka address
printf("Value of a : %d\n", a);
printf("Dereference : %d\n", *p); // 10
*p = 25; // pointer se value badli
printf("After change : %d\n", a); // 25
return 0;
}

OUTPUT

Value of a : 10
Dereference : 10
After change : 25

1.2 Two variables, two pointers

#include <stdio.h>
int main() {
int x = 5, y = 20;
int *p1 = &x, *p2 = &y;
printf("x = %d, y = %d\n", *p1, *p2);
*p1 = *p1 + *p2; // x = x + y
printf("After add x = %d\n", x); // 25
return 0;
}

OUTPUT

x = 5, y = 20
After add x = 25

1.3 Pointer ki value badalna

#include <stdio.h>
int main() {
int a = 100;
int *p = &a;
printf("Before: %d\n", *p);
*p += 50; // value 50 badhao
printf("After : %d\n", *p); // 150
return 0;
}

OUTPUT

Before: 100
After : 150

GKDB - C Pointer Programs - Page 1


1.4 float pointer

#include <stdio.h>
int main() {
float f = 3.5;
float *p = &f;
printf("Value : %.2f\n", *p);
*p = *p * 2;
printf("Double: %.2f\n", *p); // 7.00
return 0;
}

OUTPUT

Value : 3.50
Double: 7.00

1.5 char pointer

#include <stdio.h>
int main() {
char ch = 'A';
char *p = &ch;
printf("Char : %c\n", *p);
*p = 'Z';
printf("New : %c\n", *p); // Z
return 0;
}

OUTPUT

Char : A
New : Z

2. Null Pointer

2.1 Null check

#include <stdio.h>
int main() {
int *p = NULL;
if (p == NULL) printf("Pointer NULL hai\n");
int a = 50; p = &a;
if (p != NULL) printf("Ab valid, value = %d\n", *p);
return 0;
}

OUTPUT

Pointer NULL hai


Ab valid, value = 50

GKDB - C Pointer Programs - Page 2


2.2 Null se crash bachao

#include <stdio.h>
int main() {
int *p = NULL;
if (p != NULL) printf("%d\n", *p);
else printf("Safe: NULL pointer dereference nahi kiya\n");
return 0;
}

OUTPUT

Safe: NULL pointer dereference nahi kiya

2.3 Null assign later

#include <stdio.h>
int main() {
int *p = NULL;
printf("Step1: pointer NULL\n");
int num = 99;
p = &num;
printf("Step2: value = %d\n", *p); // 99
return 0;
}

OUTPUT

Step1: pointer NULL


Step2: value = 99

2.4 Function returning NULL

#include <stdio.h>
int* getPtr(int flag, int *val) {
if (flag) return val;
return NULL;
}
int main() {
int a = 7;
int *p = getPtr(0, &a);
if (p == NULL) printf("NULL mila\n");
p = getPtr(1, &a);
if (p) printf("Value = %d\n", *p); // 7
return 0;
}

OUTPUT

NULL mila
Value = 7

GKDB - C Pointer Programs - Page 3


2.5 Reset to NULL after use

#include <stdio.h>
int main() {
int a = 10;
int *p = &a;
printf("Use: %d\n", *p);
p = NULL; // ab dangling na rahe
if (p == NULL) printf("Pointer reset to NULL\n");
return 0;
}

OUTPUT

Use: 10
Pointer reset to NULL

3. Pointer to Pointer (Double Pointer)

3.1 Basic double pointer

#include <stdio.h>
int main() {
int a = 100;
int *p = &a;
int **pp = &p;
printf("a=%d *p=%d **pp=%d\n", a, *p, **pp);
**pp = 200;
printf("After: a = %d\n", a); // 200
return 0;
}

OUTPUT

a=100 *p=100 **pp=100


After: a = 200

3.2 Teeno levels print

#include <stdio.h>
int main() {
int x = 5;
int *p = &x;
int **pp = &p;
printf("x via p : %d\n", *p);
printf("x via pp : %d\n", **pp);
return 0;
}

OUTPUT

x via p : 5
x via pp : 5

GKDB - C Pointer Programs - Page 4


3.3 Double pointer se modify via function

#include <stdio.h>
void setValue(int **pp) { **pp = 500; }
int main() {
int a = 1;
int *p = &a;
setValue(&p);
printf("a = %d\n", a); // 500
return 0;
}

OUTPUT

a = 500

3.4 Pointer ko function se change

#include <stdio.h>
int g = 77;
void point(int **pp) { *pp = &g; }
int main() {
int *p = NULL;
point(&p);
printf("Value = %d\n", *p); // 77
return 0;
}

OUTPUT

Value = 77

3.5 Triple level samajh

#include <stdio.h>
int main() {
int v = 9;
int *p = &v;
int **pp = &p;
int ***ppp = &pp;
printf("***ppp = %d\n", ***ppp); // 9
***ppp = 18;
printf("v = %d\n", v); // 18
return 0;
}

OUTPUT

***ppp = 9
v = 18

4. Function Pointer

GKDB - C Pointer Programs - Page 5


4.1 Basic function pointer

#include <stdio.h>
int add(int a, int b) { return a + b; }
int main() {
int (*fp)(int,int) = add;
printf("Add = %d\n", fp(5,3)); // 8
return 0;
}

OUTPUT

Add = 8

4.2 Switch between functions

#include <stdio.h>
int add(int a,int b){return a+b;}
int mul(int a,int b){return a*b;}
int main() {
int (*fp)(int,int);
fp = add; printf("Add=%d\n", fp(4,2));
fp = mul; printf("Mul=%d\n", fp(4,2));
return 0;
}

OUTPUT

Add=6
Mul=8

4.3 Function pointer as argument

#include <stdio.h>
int square(int n){return n*n;}
void run(int (*f)(int), int x){ printf("Result=%d\n", f(x)); }
int main() {
run(square, 6); // 36
return 0;
}

OUTPUT

Result=36

GKDB - C Pointer Programs - Page 6


4.4 Array of function pointers

#include <stdio.h>
int add(int a,int b){return a+b;}
int sub(int a,int b){return a-b;}
int mul(int a,int b){return a*b;}
int main() {
int (*ops[3])(int,int) = {add, sub, mul};
printf("Add=%d\n", ops[0](10,4));
printf("Sub=%d\n", ops[1](10,4));
printf("Mul=%d\n", ops[2](10,4));
return 0;
}

OUTPUT

Add=14
Sub=6
Mul=40

4.5 Calculator using function pointer

#include <stdio.h>
int add(int a,int b){return a+b;}
int sub(int a,int b){return a-b;}
int main() {
int (*fp)(int,int);
char op = '+';
fp = (op=='+') ? add : sub;
printf("Answer=%d\n", fp(8,3)); // 11
return 0;
}

OUTPUT

Answer=11

5. Array & Pointer Relation

5.1 Array via pointer

#include <stdio.h>
int main() {
int arr[3] = {10,20,30};
int *p = arr;
printf("%d %d %d\n", *p, *(p+1), *(p+2));
return 0;
}

OUTPUT

10 20 30

GKDB - C Pointer Programs - Page 7


5.2 Loop with pointer

#include <stdio.h>
int main() {
int arr[5] = {1,2,3,4,5};
int *p = arr, i;
for (i=0;i<5;i++) printf("%d ", *(p+i));
printf("\n");
return 0;
}

OUTPUT

1 2 3 4 5

5.3 Sum of array using pointer

#include <stdio.h>
int main() {
int arr[5] = {10,20,30,40,50};
int *p = arr, sum = 0, i;
for (i=0;i<5;i++) sum += *(p+i);
printf("Sum = %d\n", sum); // 150
return 0;
}

OUTPUT

Sum = 150

5.4 arr[i] vs *(arr+i)

#include <stdio.h>
int main() {
int arr[3] = {7,8,9};
printf("arr[1] = %d\n", arr[1]);
printf("*(arr+1) = %d\n", *(arr+1));
return 0;
}

OUTPUT

arr[1] = 8
*(arr+1) = 8

5.5 Max element using pointer

#include <stdio.h>
int main() {
int arr[5] = {3,9,2,8,5};
int *p = arr, max = *p, i;
for (i=1;i<5;i++) if (*(p+i) > max) max = *(p+i);
printf("Max = %d\n", max); // 9
return 0;
}

OUTPUT

Max = 9

6. Pointer Arithmetic

GKDB - C Pointer Programs - Page 8


6.1 Increment / decrement

#include <stdio.h>
int main() {
int arr[4] = {1,2,3,4};
int *p = arr;
printf("%d\n", *p); // 1
p++; printf("%d\n", *p); // 2
p--; printf("%d\n", *p); // 1
return 0;
}

OUTPUT

1
2
1

6.2 Jump with p+n

#include <stdio.h>
int main() {
int arr[5] = {10,20,30,40,50};
int *p = arr;
printf("%d\n", *(p+3)); // 40
return 0;
}

OUTPUT

40

6.3 Pointer difference

#include <stdio.h>
int main() {
int arr[5];
int *s = &arr[0], *e = &arr[4];
printf("Distance = %ld\n", e - s); // 4
return 0;
}

OUTPUT

Distance = 4

6.4 Reverse print using pointer

#include <stdio.h>
int main() {
int arr[4] = {1,2,3,4};
int *p = &arr[3];
while (p >= arr) { printf("%d ", *p); p--; }
printf("\n"); // 4 3 2 1
return 0;
}

OUTPUT

4 3 2 1

GKDB - C Pointer Programs - Page 9


6.5 Compare two pointers

#include <stdio.h>
int main() {
int arr[3] = {1,2,3};
int *a = &arr[0], *b = &arr[2];
if (b > a) printf("b aage hai\n");
printf("Gap = %ld\n", b - a); // 2
return 0;
}

OUTPUT

b aage hai
Gap = 2

7. Swap Using Pointers (Call by Reference)

7.1 Basic swap

#include <stdio.h>
void swap(int *x,int *y){int t=*x;*x=*y;*y=t;}
int main() {
int a=5,b=9;
swap(&a,&b);
printf("a=%d b=%d\n", a, b); // 9 5
return 0;
}

OUTPUT

a=9 b=5

7.2 Swap without third var

#include <stdio.h>
void swap(int *x,int *y){*x=*x+*y;*y=*x-*y;*x=*x-*y;}
int main() {
int a=3,b=7;
swap(&a,&b);
printf("a=%d b=%d\n", a, b); // 7 3
return 0;
}

OUTPUT

a=7 b=3

7.3 Swap float

#include <stdio.h>
void swap(float *x,float *y){float t=*x;*x=*y;*y=t;}
int main() {
float a=1.5,b=2.5;
swap(&a,&b);
printf("a=%.1f b=%.1f\n", a, b); // 2.5 1.5
return 0;
}

OUTPUT

a=2.5 b=1.5

GKDB - C Pointer Programs - Page 10


7.4 Swap chars

#include <stdio.h>
void swap(char *x,char *y){char t=*x;*x=*y;*y=t;}
int main() {
char a='X',b='Y';
swap(&a,&b);
printf("a=%c b=%c\n", a, b); // Y X
return 0;
}

OUTPUT

a=Y b=X

7.5 Modify via reference

#include <stdio.h>
void addTen(int *n){*n += 10;}
int main() {
int x = 5;
addTen(&x);
printf("x = %d\n", x); // 15
return 0;
}

OUTPUT

x = 15

8. String with Pointer

8.1 Print string char by char

#include <stdio.h>
int main() {
char str[] = "GKDB";
char *p = str;
while (*p) { printf("%c", *p); p++; }
printf("\n");
return 0;
}

OUTPUT

GKDB

8.2 String length

#include <stdio.h>
int main() {
char str[] = "Hello";
char *p = str; int len = 0;
while (*p) { len++; p++; }
printf("Length = %d\n", len); // 5
return 0;
}

OUTPUT

Length = 5

GKDB - C Pointer Programs - Page 11


8.3 Count vowels

#include <stdio.h>
int main() {
char str[] = "education";
char *p = str; int v = 0;
while (*p) {
if (*p=='a'||*p=='e'||*p=='i'||*p=='o'||*p=='u') v++;
p++;
}
printf("Vowels = %d\n", v); // 5
return 0;
}

OUTPUT

Vowels = 5

8.4 Copy string using pointers

#include <stdio.h>
int main() {
char src[] = "Copy", dest[20];
char *s = src, *d = dest;
while (*s) { *d = *s; s++; d++; }
*d = '\0';
printf("Dest = %s\n", dest); // Copy
return 0;
}

OUTPUT

Dest = Copy

8.5 Reverse string using pointers

#include <stdio.h>
#include <string.h>
int main() {
char str[] = "ABCD";
char *start = str, *end = str + strlen(str) - 1;
while (start < end) {
char t = *start; *start = *end; *end = t;
start++; end--;
}
printf("Reversed = %s\n", str); // DCBA
return 0;
}

OUTPUT

Reversed = DCBA

GKDB - C Pointer Programs - Page 12

You might also like