Pointers in c

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

  1. Void Pointer
  2. NULL Pointer
  3. Dangling Pointer
  4. 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;
}

Video Referance

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top