Pointer рдПрдХ variable рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп variable рдХрд╛ adress store рдХрд░рддрд╛ рд╣реИ (рд░рдЦрддрд╛ рд╣реИ)| рдЬрд┐рд╕ рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╣рдо variable рдХреА values рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░ рдкрд╛рддреЗ рд╣реИ , рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╣рдо pointer variable рдХреА value рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИред
- Pointer рдореЗрдВ address рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП & (operator) рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ address of operator рдХрд╣рддреЗ рд╣реИред
- рдЬрд┐рд╕ variable address рдкрд░ pointer рдкреЙрдЗрдВрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ , рдЙрд╕ рдкрд░ рдЬреЛ value рд╣реИ рдЙрд╕рдХреЛ access рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП *(asterisk operator) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИред рдЗрд╕реЗ dereference operator рдХрд╣рддреЗ рд╣реИред
- рдпрджрд┐ рд╣рдо pointer рдХреА рдорджрдж рд╕реЗ value change рдХрд░реЗрдВрдЧреЗ рддреЛ variable рдХреА рднреА value change рд╣реЛ рдЬрд╛рдПрдЧреА рдЬрд┐рд╕рдХреЛ pointer variable point рдХрд░ рд░рд╣рд╛ рдерд╛ред
- рдЬрд┐рд╕ data type рдХрд╛ pointer variable рд╣реЛрдЧрд╛ рд╡рд╣ рдЙрд╕реА type рдХреЗ рдХрд┐рд╕реА рджреБрд╕рд░реЗ variable рдХрд╛ рдПрдбреНрд░реЗрд╕ store рдХрд░ рд╕рдХрддрд╛ рд╣реИред
#include <stdio.h>
// syntax
// data_type *variable = &variable;
int main() {
int a = 10;
// ptr ---> a
int *ptr = &a;
// accessing value through pointer & variable
// using pointer
printf("*ptr = %dn", *ptr); // 10;
printf("a = %dn", a); // 10
// changing value using pointer
*ptr = 15;
printf("After changing valuen");
printf("*ptr = %dn", *ptr); // 15;
printf("a = %dn", a); // 15
return 0;
}
// output
// *ptr = 10
// a = 10
// After changing value
// *ptr = 15
// a = 15}
рджрд┐рдпрд╛ рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ a рдПрдХ variable рд╣реИ рдПрд╡рдВ *ptr рдПрдХ pointer (pointer variable) рд╣реИ, рдЬрд┐рд╕рдореЗ variable a address assign рдХрд░ рджрд┐рдпрд╛ рд╣реИред
void type рдХрд╛ poitner рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░(data type) рдХреЗ address рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
Types of pointers
- Void Pointer
- NULL Pointer
- Dangling Pointer
- Wild Pointer
1. Void Pointer
Void pointer рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ pointer рд╣реИ, void рдкреНрд░рдХрд╛рд░ рдХрд╛ pointer рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ pointer рдореЗрдВ type cast рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
#include <stdio.h>
int main() {
// void pointer
void *ptr;
return 0;
}
2. Null Pointer
NULL pointer рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреЙрдЗрдВрдЯрд░ рд╣реИ, рд╡рд╣ pointer рдЬрд┐рд╕рдореЗ рд╣рдордиреЗ NULL assign рдХрд░ рджрд┐рдпрд╛ рд╣реИ рд╡рд╣ NULL pointer рдХрд╣рд▓рд╛рддрд╛ рд╣реИред
#include <stdio.h>
int main() {
int *ptr = NULL; // null pointer
return 0;
}
3. Dangling Pointer
Dangling рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ pointer рд╣реИ, рдЬреЛ рдХреА рдЙрд╕ memory location рдпрд╛ address рдХреЛ рдкреЙрдЗрдВрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ delete рдпрд╛ free рдХрд░ рджреА рдЧрдпреА рд╣реЛред
#include <stdio.h>
#include <stdlib.h>
int main() {
// dynamic memory allocation
int *ptr = (int* ) malloc(sizeof(int));
// free memory
free(ptr);
// ptr is pointing to a deleted memory location now.
// now ptr became dangling pointer
// garwage value displayed
printf("value of *ptr is %d ", *ptr);
return 0;
}
4. Wild Pointer
Wild pointer рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ pointer рд╣реИ, рдЬреЛ рдХреА declare рддреЛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА address рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИред
#include <stdio.h>
int main() {
// wild pointer
int *ptr;
printf("%dn", *ptr);
return 0;
}