Thursday, February 9, 2023

சி மொழியில் ஸ்ட்ரக்சர்

 


To learn more about  c, c++, java, c#, vb.net, asp.net, asp.net core, javascript, angular, react js, web designing, fullstack web development , python , php, my sql, sql server ,ms-office, tally contact:

919629329142

both direct and on line coaching available.

visit youtube channel "programming with karthikeyan" for learn programming concepts in Tamil. please don't forget to subscribe to that channel.

சி மொழியில் ஸ்டரக்சர் என்பது யூசர் டெஃபைண்டு டேட்டா டைப் ஆகும். இது வெவ்வேறு டேட்டா டைப் கொண்ட டேட்டாக்களின் குரூப்பாக சிங்கிள் டேட்டா டைப்பாக ஸ்டோர் செய்தல் ஆகும்.



ஸ்ட்ரக்சரை எவ்வாறு உருவாக்குவது?

Struct என்ற கீவேர்டு ஸ்ட்ரக்சரை உருவாக்க பயன்படுகின்றது,

சான்று:

struct address

{

   char name[50];

   char street[100];

   char city[50];

   char state[20];

   int pin;

};

ஸ்ட்ரக்சர் வேரியபிளை எவ்வாறு அறிவிப்பது.

ஸ்ட்ரக்சர் வேரியபிளை ஸ்ட்ரக்ட் அறிவிப்பின் போதே அறிவிக்கலாம். அல்லது பொதுவாக வேரியபிளை எவ்வாறு அறிவிக்கின்றோமோ அதே போல் Struct என்ற கீவேர்டு மற்றும் ஸ்ட்ரக்ட் பெயர் ஆகியவை கொண்டு அறிவிக்கலாம்.

// A variable declaration with structure declaration.

struct Point

{

   int x, y;

} p1;  // The variable p1 is declared with 'Point'

  

  

// A variable declaration like basic data types

struct Point

{

   int x, y;

}; 

  

int main()

{

   struct Point p1;  // The variable p1 is declared like a normal variable

}

சி++ ஸ்ட்ரக்சரில் struct கீவேர்டுடன் வேரியபிள் அறிவிப்பது ஆப்சனல் ஆகும் . சி மொழியில் கட்டாயம் ஆகும்.

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

ஸ்ட்ரக்ட் அறிவிப்பின் போதே அதன் மெம்பர்களுக்கு  மதிப்பிருத்தல் கூடாது. அது கம்பைல் டைம் பிழையை உருவாக்கும்.

struct Point

{

   int x = 0;  // COMPILER ERROR:  cannot initialize members here

   int y = 0;  // COMPILER ERROR:  cannot initialize members here

}; 

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

ஸ்ட்ரக்ட் மெம்பர்களுக்கு மதிபிப்ருத்துவதற்கு {} என்பது பயன்படுகின்றது.

struct Point

{

   int x, y;

}; 

  

int main()

{

   // A valid initialization. member x gets value 0 and y

   // gets value 1.  The order of declaration is followed.

   struct Point p1 = {0, 1}; 

}

ஸ்ட்ரக்ட் மெம்பர்களை எவ்வாறு ஆக்சஸ் செய்வது?

ஸ்ட்ரக்ட் மெம்பர்களானது டாட் ஆபரேட்டர் (.)கொண்டு ஆக்சஸ் செய்யப்படுகின்றது.

#include<stdio.h>

  

struct Point

{

   int x, y;

};

  

int main()

{

   struct Point p1 = {0, 1};

  

   // Accessing members of point p1

   p1.x = 20;

   printf ("x = %d, y = %d", p1.x, p1.y);

  

   return 0;

}

Output:

x = 20, y = 1

டெசிக்னேட்டடு இனிசியலைசேசன் என்பது?

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

#include<stdio.h>

  

struct Point

{

   int x, y;

};

  

int main()

{

   struct Point p1 = {0, 1};

  

   // Accessing members of point p1

   p1.x = 20;

   printf ("x = %d, y = %d", p1.x, p1.y);

  

   return 0;

}

Output:

x = 20, y = 1

இந்த பயன் சி++ ஸ்ட்ரக்டருக்கு கிடையாது.

அர்ரே ஆஃப் ஸ்ட்ரக்ட் என்பது என்ன?

முதன்மை டேட்டா டைப்கள் போலவே ஸ்ட்ரக்ட் வேரியபிளுக்கும் அர்ரே உருவாக்கலாம்.

சான்று நிரல்.

#include<stdio.h>

  

struct Point

{

   int x, y;

};

  

int main()

{

   // Create an array of structures

   struct Point arr[10];

  

   // Access array members

   arr[0].x = 10;

   arr[0].y = 20;

  

   printf("%d %d", arr[0].x, arr[0].y);

   return 0;

}

Output:

10 20

 

ஸ்ட்ரக்சர் பாயிண்டர் என்பது என்ன?

முதன்மை டேட்டா டைப் போலவே ஸ்ட்ரக்ட் வேரியபிள்களின் முகவரியையும் பாயிண்டர் டேட்டா வேரியபிளில் ஸ்டோர் செய்யலாம்.பாயிண்டர் கொண்டு வேரியபிள்களை ஆக்சஸ் செய்ய ஆரோ மார்க் ஆபரேட்டர் (->) பயன்படுகின்றது.

சான்று நிரல்.

#include<stdio.h>

  

struct Point

{

   int x, y;

};

  

int main()

{

   struct Point p1 = {1, 2};

  

   // p2 is a pointer to structure p1

   struct Point *p2 = &p1;

  

   // Accessing structure members using structure pointer

   printf("%d %d", p2->x, p2->y);

   return 0;

}

Output:

1 2

சி ஸ்ட்ரக்சரில் லிமிட்டேசன்கள்.

1.     ஸ்ட்ரக்சர் ஆனது ஆர்டினரி வேரியபிள் போல அதன் வேரியபிளை பயன்படுத்துதல் இல்லை.

2.     அரித்மேட்டிக் ஆபரேட்டர்களை ஸ்ட்ரக்சர் வேரியபிளுக்கு பயன்படுத்த முடியாது.

சான்றாக பின் வரும் நிரல் பிழை சுட்டும்.

struct number

{

    float x;

};

int main()

{

    struct number n1,n2,n3;

    n1.x=4;

    n2.x=3;

    n3=n1+n2;

    return 0;

}

  

/*Output:

  

prog.c: In function 'main':

prog.c:10:7: error: 

invalid operands to binary + (have 'struct number' and 'struct number')

  n3=n1+n2;

  

*/

  3. டேட்டா ஹைடிங்க் கிடையாது ஸ்ட்ரக்ட் மெம்பர்களை எங்கிருந்தும் ஆக்சஸ் செய்யலாம்.

      4. ஸ்ட்ரக்ட்டுக்குள் ஃபங்க்சன் எழுத முடியாது.

      5. ஸ்ட்ரக்டுக்குள் ஸ்டேட்டிக் மெம்பர்களை பயன்படுத்தல் இயலாது.

6. ஆக்சஸ் மாடிஃபையர் கிடையாது.

7.ஸ்ட்ரக்ட்டுக்குள் சி++ போன்று கன்ஸ்ட்ரக்டர் எழுத இயலாது.

நன்றி.

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

 

 

 

 

 

ads Udanz