Wednesday, November 9, 2011

c-மொழியில் பாயிண்டர்கள்.



DENNIS RITCHIE



சாதாரணமாக c மொழியில் ஒரு மாறியை(variable) அறிவித்தவுடன் நிணைவகத்தில் ஏதாவது ஒரு இடத்தில் பெயரிடப்பட்டு.நிணைவக அளவு ஒதுக்கப்படுகின்றது,
உதாரணமாக
Int a;
அறிவித்தால் நிணைவகத்தில் a என பெயரிடப்பட்டு 2 பைட் ஒதுக்கப்படுகின்றது.இதுவே float எனில் 4 பைட் நினைவகம் ஒதுக்கப்படும்.ஆனால் அந்த நிணைவகதிற்கென்று ஒரு முகவரி இருக்கும்.
அந்த முகவரியை வேறொரு மாறியில் இருத்தலாம். அந்த மாறி பாயிண்டர் எனப்படுகிறது.
A variable that hold the address of another variable is called as p[ointer.
உதாரணத்துக்கு
Int a=5;
என அறிவிக்கிறோம் எனில் அந்த மாறியின் பெயர் a எனவும்  அதன் மதிப்பு 5 எனவும் ஆகும்..இப்போது அந்த மாறியின் முகவரி 1001 எனக் கொள்வோம்.. இப்போது &a என்பது a யின் முகவரியை குறிக்கும் . அதாவது 1001 ஆகும்.
இப்போது ஒரு பாயிண்டர் மாறியை அரறிவிகிறோம்.
Int *p;
pக்கு முன்னால் உள்ள * அது ஒரு பாயிண்டர் மாறி என்பதைக் குறிக்கின்றது.
\இப்போது
P=&a ;
என கொடுத்தால் pயில் 1001 என மதிப்பிருடத்தப்படும்.
பாயிண்டர்களின் நண்மைகள்.
1.நிரலின் இயங்கு வேகம் அதிகரிக்கின்றது.
2. நிரலின் கடினத்தன்மை நீக்கப்படுகின்றது.
3. ஒரு வழிமுறைக்கு (method) வெளியே அறிவிக்கப்பட்ட மாறியை(variable) அணுகப் பயன் படுகின்றது.
மாறியின் முகவரியை அணுகுதல்
Int a=10;
மாறியின் பெயர் a என்றால் &a என்பது அதன் முகவரியாகும். இதை 1005 எனக் கொள்வோம்..அதன் மதிப்பு 10 ஆகும்.
Int *p;
P என்பது பாயிண்டர்  மாறியாகும். இது integer தரவாக அறிவிக்கப்பட்டுள்ளதால் மற்றொரு integer மாறியின் முகவரியை இதில் இருத்த முடியும்.
அதாவது
P=&a;
இப்போது p யின் மதிப்பு 1005 ஆகும்.
அதாவது
மாறி
மதிப்பு
முகவரி
a
10
1005
p
1005
2000


பாயிண்டர் மூலம் ஒரு மாறியின் மதிப்பை அணுகுதல்.
அதாவது int a=10 என அறிவித்து int *p என அறிவித்துள்ளோம்
Int a=10;
P=&a;
P என்ற பாயின்டர் மாறியின் மூலம் aயின் மதிப்பை அனுக முடியும்.
*p
என அணுகினால் aயின் மதிப்பு கிடைக்கும்.
உதாரணத்துக்கு கீழ்க்கண்ட நிரலை எடுத்துக் கொள்வோம்.
#include<stdio.h>
main()
{
Int  a=10;
Int *p;
P=&a;
printf(“value of a is %d”,a);

printf(“value of a is %d”,*P);
printf(“address of a is %u”,&a);
return 0;
}
Output:
Value of a is 10
Value of a is 10
Address of a is 1005.
-நன்றி






ads Udanz

1 comment:

  1. நன்றாக உள்ளது. c, c#, java எல்லாத்தையும் தனி தனி பக்கத்தில் போட்டால் குழப்பம் இல்லாமல் இருக்கும்.

    ReplyDelete