Saturday, January 7, 2023

சி மொழியில் NULL பாயிண்டர்.





ஒரு நல் பாயிண்டர் எனப்படுவது எந்த வொரு மெமரி

லொகேசனையிம் பாயிண்ட் செய்யாத பாயிண்டர் வேரியபிள்

ஆகும்.இது செக்மெண்டின் பேஸ் அட்ரசை ஸ்டோர்

செய்கின்றது.நல் பாயிண்டர் அடிப்படையில் NULL மதிப்பை

ஸ்டோர் செய்யும் வாய்ட் டைப் ஆகும்.

இது stddef என்ற லைப்ரரியில் உள்ள சிறப்பு ரிசர்வ்டு

மதிப்பாகும்.இங்கு NULL என்பது 0 வது மெமெரிலொக்கசேனை

பாயிண்ட் செய்வ்தாகும்.

ஒரு பாயிண்டர் வேரியபிளுக்கு எந்த ஒரு அட்ரசும் ஸ்டோர் செய்ய

இல்லாத நிலையில் அது நல் பாயிண்டர் எனப்படுகின்றது.

நல் பாயிண்டர் பயன்பாடுகள்.

இது ஒரு வாலிட் மெமரி அட்ரசை ஸ்டோர் செய்யாத நிலையில்

பயன்படுகின்றது.

இது ஒரு பாயிண்டர் வேரியபிளை டிரெஃபெரன்ஸ் செய்வதற்கு

முன் எர்ரர் காண்ட்லிங்க் செய்ய பயன்படுகின்றது.

இது ஒரு ஃபங்க்சனுக்கு ஆர்க்கியூமண்டாக பாஸ் செய்யவும் ஒரு

ஃபங்க்சனில் இருந்து ரிடர்ன் செய்யவும் பயன்படுகின்றது

Examples of Null Pointer

int *ptr=(int *)0;

float *ptr=(float *)0;

char *ptr=(char *)0;

double *ptr=(double *)0;

char *ptr='\0';

int *ptr=NULL;


சான்று நிரல்-1

#include <stdio.h>  

int main()  

{  

    int *ptr;  

   printf("Address: %d", ptr); // printing the value of ptr.  

   printf("Value: %d", *ptr); // dereferencing the illegal pointer  

   return 0;  

}  

மேலே உள்ள நிரலில் ptr என்ற பாயிண்டரில் எந்த ஒரு அட்ரசும்

ஸ்டோர் செய்யவில்லை இந்த நிலையில் அதை டிரெஃபெரன்ஸ்

செய்து பிரிண்ட் செய்தால் கம்பைல் டைம் எர்ரர் காட்டப்படும்.

ஸ்டாக் மெமரி கருத்துப்படில் எல்லா வேரியபிள்களும் ஸ்டாக்

மெமரியில் ஸ்டோர் செய்யப்படும்.அப்படி எந்த ஒரு மதிப்பும்

ஸ்டோர் செய்யவில்லையெனில் ஏதாவது ஒரு கார்பேஜ் மதிப்பு

அதில் ஸ்டோர் ஆகி இருக்கும்.

எனவே மேலே உள்ள நிரல் சிக்கலான கம்பைல் டைம் எர்ரருக்கு

இட்டுச் செல்லும்.

மேலே உள்ள சிக்கலை தவிர்ப்பது எப்படி?


NULL பாயிண்டர் உதவி கொண்டு இந்த சிக்கலை தவிர்க்கலாம்.

நல் பாயிண்டர் ஆனது ரிசர்வ்டு மெமரியின் 0வது லொக்கேசனை

பாயிண்ட் செய்யும்.இதை டிரெஃபெரென்ஸ் செய்ய இயலாது.

சான்று நிரல்

#include <stdio.h>  

int main()  

{  

    int *ptr=NULL;  

    if(ptr!=NULL)  

    {  

        printf("value of ptr is : %d",*ptr);  

    }  

    else  

    {  

        printf("Invalid pointer");  

    }  

  return 0;  

}  

மேலே உள்ள நிரலில் பாயிண்டர்க்கு நல் மதிப்பு ஸ்டோர்

செய்யப்படுகின்றது. இது எந்த ஒரு வேரியபிளின் அட்ரசும்

இல்லை அதனால் இதை டிரெஃபெரென்ஸ் செய்ய இயலாது.


Malloc() ஃபங்க்சனை உபயோக்கிக்கும் பொழுது கீழ் வருமாறு

பயன்படுகின்றது.

#include <stdio.h>  

int main()  

{  

    int *ptr;  

    ptr=(int*)malloc(4*sizeof(int));  

    if(ptr==NULL)  ம்

    {  

        printf("Memory is not allocated");  

    }  

    else  

    {  

        printf("Memory is allocated");  

    }  

    return 0;  

}  

Malloc() ஃபங்க்சன் ஆனது மெமரியை ஒதுக்கீடு செய்ய

பயன்படுகின்றது. இந்த ஃபங்க்சனால் மெமரி ஒதுக்கீடு செய்ய

இயலாத நிலையில் இது NULL மதிப்பை ரிடர்ன்

செய்யும்.எனவே இது NULL மதிப்பா என சோதனை செய்ய


வேண்டிய நிலை உள்ளது.இதன் மதிப்பு NULL இல்லையெனில்

இது மெமரியை ஒதுக்கீடு செய்யப்பட்டுள்ளது என்பது

தெரியவரும்.

நன்றி

முத்து கார்த்திகேயன் ,மதுரை.

ads Udanz

No comments:

Post a Comment