சிமொழியின் மாறிலியில் சுட்டிகளும் ,மாறிலிக்கு சுட்டிகளும் ஆகியஇரண்டிற்கும் இடையேஉள்ள வேறுபாடுகளை அறிந்துகொள்வோம்

சிமொழியை பற்றி அறிமுகம் இல்லாதவர்களுக்கு சுட்டிகள் என்பதை புரிந்துகொள்வதற்கு மிககடினமானதாகவும் சிக்கலானதாகவும் இருக்கும் .அதுமட்டுமல்லாது மாறிலியுடன் இந்த சுட்டிகளையும் சேர்த்து அறிந்து தெரிந்து கொள்வது என்பது இடியாப்ப சிக்கல் போன்று சிக்கலுக்குள் சிக்கலாக மிக அதிக குழப்பத்தையும்   சிமொழியை அறிந்து கொள்ளவே வேண்டாம் என புதியவர்கள் பயந்துகாததூரம் ஓடும் அளவிற்கு அதிகசிக்கல்பிக்கலை உருவாக்கிவிடுகின்றன. அஞ்சற்க இந்த கட்டுரையில் சிறிய நிரல் தொடர்களின் வாயிலாக   மாறிலியின் சுட்டிகளும் ,மாறிலிக்குசுட்டிகளும் ஆகிய இரண்டிற்கும் இடையேஉள்ள வேறுபாடுகளை பற்றிய விளக்கம் அளிக்கபட்டுள்ளது அதனை தெரிந்துகொண்டாலே போதுமானதாகும்

மாறிலிக்கு சுட்டி

பொதுவாக மாறியின் மதிப்பை சுட்டியானது சுட்டிகாட்டுகின்றது அதாவது ஒரு சுட்டியானது சுட்டி காட்டிடும் மாறியின் மதிப்பை யாராலும் மாற்றிடமுடியாத நிலையை மாறிலிக்கு சுட்டி என அறிந்துகொள்க

மேலும் குறிப்பாக தெரிந்து கொள்ளவேண்டுமெனில் இந்த சுட்டியிருக்கும் இடத்தின் முகவரியை மட்டும் மாற்றியமைத்திடலாம் ஆனால் அதனுடைய முகவரியின் மதிப்பை மட்டும் மாற்றமுடியாது அதனையே மாறிலிக்கு சுட்டி எனதெரிந்துகொள்க

நிரல் தொடர்1

#include <stdio.h>

int main()

{

// Definition of the variable

int a = 10;

 

// Definition of pointer to constant

Const int* ptr = &a; //Now, ptr is pointing to the value of the variable ‘a’

 

*ptr = 30; //Error: Since the value is constant

 

Return 0;

}

மேலே கூறிய நிரல்தொடரில் மாறியின் மதிப்பை அதாவது சுட்டிகாட்டிடும் மாறிலிக்கு மாற்றியமைத்திட முயலும்போது பிழை எனும் செய்தியுடன் தோன்ற செய்கின்றது ஏனெனில் இது ஒருமாறிலி எனும் செய்தியை இந்த நிரல் தொடரை இயந்திரமொழியாக மொழிமாற்றம் செய்து இயக்கும்போது திரையில் பிரதிபலிக்க செய்கின்றது.

 

நிரல் தொடர்2

 

#include <stdio.h>

int main()

{

// Definition of the variable

int a = 10;

int b – 20;

 

// Definition of pointer to constant

Const int* ptr = &a; //Now, ptr is pointing to the value of variable ‘a’

 

Ptr = &b; // Works: Since pointer is not constant

Return 0;

}

 

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

நிரல்தொடர் 3

 

#include <stdio.h>

int main()

{

// Definition of the variable

int a = 10;

int b – 20;

 

// Definition of pointer to constant

Const int* ptr = &a; //Now, ptr is pointing to the value of variable ‘a’

 

*Ptr = 30; // Works: Since the pointer pointing to the value is not constant

 

Ptr = &b; //Error:Now, ptr is poiting to the value of the variable ‘b’

 

 

Return 0;

}

இந்த மூன்றாவது நிரல் தொடரில் Ptr எனும் சுட்டியின் முகவரியை மாற்ற முயலும்போது பிழைச்செய்தியை காண்பிக்கின்றது ஏனெனில் இதில் முகவரியை வேறொரு மாறிக்கு மாற்றியமைத்திட முயலுகின்றது அதனால்.பிழைச்செய்தியை காண்பிக்கின்றது

 

பொதுவாக சிமொழியிலும் உட்பொதிந்த சிமொழியின் நிரல்தொடரிலும் எழுத்துருக்கள் எத்தனைமுறை பயன்படுத்தபட்டுள்ளன என அறிந்துகொள்ளபயன்படுகின்றது. அதாவது மாறிலிக்கு சுட்டியானது தொடர்சரத்தில் தொடர்சரத்தின் நீளம் எவ்வளவு உள்ளன என அறிந்து கொள்ளபயன்படுகின்றது

பின்வரும் அட்டவணையின் வாயிலாக இவ்விரண்டின் வேறுபாட்டை எளிதல் புரிந்துகொள்ளமுடியும்

 

Example Part Before Asterisk Part After Asterisk Comments
Const char *ptr Const Ptr மாறிலியானது தரவின் வகைக்கேற்ப ஒத்தியங்குவதால் மதிப்பு மாறிலியாக உள்ளது
char Const *ptr char Const ptr மாறிலியானது தரவின் வகைக்கேற்ப ஒத்தியங்குவதால் மதிப்பு மாறிலியாக உள்ளது
char *Const ptr char Const ptr மாறிலியானது சுட்டியுடன் ஒத்தியங்குவதால் சுட்டி மாறிலியாகின்றது
Const char* Const ptr Const char Const ptr மாறிலியானது சுட்டியுடனும் தரவின் வகைக்கேற்பவும் ஒத்தியங்குவதால் இவையிரண்டுமே மாறிலியாக உள்ளன

 

குறிப்பு மாறிலியில் சுட்டிகளும் மாறிலிக்கு சுட்டிகளும் ஆகிய இரண்டையும் ஒற்றையான நிரல்தொடரில் அமைத்திடமுடியுமாவென நாமும் முயன்றுபார்க்கலாமே

 

 

Advertisements

மறுமொழியொன்றை இடுங்கள்

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / மாற்று )

Twitter picture

You are commenting using your Twitter account. Log Out / மாற்று )

Facebook photo

You are commenting using your Facebook account. Log Out / மாற்று )

Google+ photo

You are commenting using your Google+ account. Log Out / மாற்று )

Connecting to %s

%d bloggers like this: