Wednesday, May 1, 2019

பாயிண்டர்கள்-1



ஒரு வேரியபிளின் முகவரியை தொடர்பு கொள்ளவும் அதைக் கையாளவும்  பாயிண்டர்கள் பயன்படுகின்றது.
இது c,c++ மொழிகளின் சக்தி வாய்ந்த அம்சமாகும். இந்த கருத்தே ஜாவா, பைத்தான் ஆகியவற்றிலிருந்து சி,சி++ மொழியை பிரித்துக் காண்பிக்கின்றது.
முகவரி:
உங்களிடம் var என்கின்ற வேரியபிள் இருந்தால் &var என்பது அந்த வேரியபிளின் முகவரியைக் குறிக்கும்.
இதை நீங்கள் இங்கோ பார்த்தது போல் இருக்கின்றதா? Scanf() ஸ்டேட்மெண்ட்டில் பார்த்துஇருப்பீர்கள்.
scanf("%d", &var);
இங்கு நாம் கொடுக்கும் உள்ளீடு var என்கின்ற வேரியபிளின் முகவரியில் சேவ் ஆக வேண்டும் என்பதற்காக கொடுத்தது.

#include <stdio.h>
int main()
{
  int var = 5;
  printf("Value: %d\n", var);
  printf("Address: %u", &var); 
  return 0;
}
வெளியீடு:
Value: 5
Address: 2686778


பாயிண்டர் வேரியபிள்
ஒரு வேரியபிளின் மதிப்பாக சி மொழியில் மற்றொரு வேரியபிளின் முகவரியை சேமிக்கலாம். அந்த வேரியபிள் பாயிண்டர் வேரியபிள் எனப்படுகின்றது.
பாயிண்டர் வேரியபிளை உருவாக்குவது எப்படி?
data_type* pointer_variable_name;
int* p;
 மேலே உள்ள படி p என்பது பாயிண்டர் வேரியபிள். இதில் int டைப் வேரியபிளின் முகவரியை சேமிக்கலாம்.
Reference operator (&) and Dereference operator (*)
& ஆனது ஃபெஃப்ரென்ஸ் ஆபரேட்டர் எனப்படுகின்றது. இது ஒரு வேரியபிளின் முகவரியை தருகின்றது.
*என்பது டிரெஃபெரென்ஸ் ஆபரேட்டர் எனப்படுகின்றது. இது ஒரு முகவரியில் உள்ள மதிப்பை தருகின்றது.

நாம் பாயிண்டர் வேரியபிளை அறிவிக்கும் பொழுது தரும் * டிரெஃபெரென்ஸ் ஆபரேட்டர் கிடையாது . அது பாயிண்டர் வேரியபிள் என்பதைக் குறிக்கும் சிம்பள் ஆகும்.

சான்று நிரல்
#include <stdio.h>
int main()
{
   int* pc, c;
   
   c = 22;
   printf("Address of c: %u\n", &c);
   printf("Value of c: %d\n\n", c);
   
   pc = &c;
   printf("Address of pointer pc: %u\n", pc);
   printf("Content of pointer pc: %d\n\n", *pc);
   
   c = 11;
   printf("Address of pointer pc: %u\n", pc);
   printf("Content of pointer pc: %d\n\n", *pc);
   
   *pc = 2;
   printf("Address of c: %u\n", &c);
   printf("Value of c: %d\n\n", c);
   return 0;
}
வெளியீடு:

Address of c: 2686784
Value of c: 22

Address of pointer pc: 2686784
Content of pointer pc: 22

Address of pointer pc: 2686784
Content of pointer pc: 11

Address of c: 2686784
Value of c: 2
 
நீங்கள் இந்த நிரலை இயக்கும் பொழுது முகவரி மாற்றி காட்டப்படலாம்.

நிரல் விளக்கம்:

1.    int* pc, c;



இரண்டின் மதிப்பும் கொடுக்கப்படாத்தால் pc ஆனது ரேண்டம் ஆக எதாவது ஒரு முகவரியைச் சுட்டலாம், c ஆனது ஏதாவது ஒரு கார்பேஜ் மதிப்பைக் கொண்டிருக்கலாம்.

2.     c = 22;

இப்பொழுது 22 என்மதிப்பு c யில் சேமிக்கப்படுகின்றது. உற்று நோக்கவும் . &c யின் மதிப்பை பிரிண்ட் செய்யும் பொழுது %d எனக்கொடுக்காமல் %u எனக் கொடுக்கின்றோம். ஏனெனில் முகவரியானது unsigned integer ஆகும்.
3.   pc = &c;


இப்பொழுது c யின் முகவரி pc என்ற பாயிண்டர் வேரியபிளில் சேமிக்கப்படுகின்றது. இப்பொழுது pc –ந் மதிப்பும் c என்ற வேரியபிளின் முகவரியும் ஒன்றாயிருப்பதை கவனியுங்கள்.

4.   c = 11;

இப்பொழுது c யில் நேரடியாக 11 என்ற மதிப்பை சேமிக்கின்றோம். Pc என்ற பாயிண்டர் வேரியபிளால் சுட்டபடுவது  c யின் முகவரி தான்  எனவே *pc ஆனது 11 என்றே காட்டப்படுகின்றது.


5.   *pc = 2;

இப்பொழுது pc என்ற பாயிண்டரால் சுட்டப்படும் c யின் மதிப்பாக மறைமுகமாக 2 என்ற மதிப்பைச் சேமிக்கின்றோம்.
எனவே c யின் மதிப்பும் 2 என்று மாறுகின்றது.
-தொடரும்.

நன்றி
முத்து கார்த்திகேயன் ,
மதுரை.
TO LEARN COURSES LIKE C,C++, JAVA, DOTNET, PYTHON, PHP, WEB DESIGNING, MS-OFFICE, TALLY CONTACT:96293 29142
please provide feedback.

ads Udanz

No comments:

Post a Comment