شفرات مصدريه          مختصرات حاسوبيه          كتب          العاب         C/C++ تعلم لغة    

C/C++ تعلم لغة

  الدرس الرابع

تعريف النصوص (string)

ال  stringفي لغة C++ هو عبارة عن مجموعة من الرموز characters وفي نهاية الstring يوجد بايت يسمى Null characters ويرمز له\O" " . هناك طريقتان لتعريف الstring هما اما باستخدام المصفوفة array او باستخدام الpointer مثال ذلك:

char str1[10];  /*Declaring a string containing 10 element using array*/

char* str2;     /*Declaring a string using pointer*/

 لنفرض ان  str1يحتوي على النص “better c” فان تمثيلها في الذاكرة سوف يكون :

str1[0]

str1[1]

str1[2]

str1[3]

str1[4]

str1[5]

str1[6]

str1[7]

str1[8]

str1[9]

b

e t t e r   c \0  

بينما اذا كان  str2 يحتوي على النص “better c” فان تمثيلها في الذاكرة سوف يكون :

 *str2+0

*str2+1

*str2+1

*str2+3

*str2+4

*str2+5

*str2+6

*str2+7

*str2+8

b e t t e r   c \0

 ان الفرق بين الطريقتين هو ان الطريقة الاولى (طريقة المصفوفة) تحجز دائماً عدد معين من العناصر (الحروف والرموز) , وفي مثالنا كانت عشرة عناصر-

اما الطريقة الثانية (طريقة الpointer) فان عدد العناصر غير محدد ويكون عدد عناصر المتغير مساوي لعدد عناصر القيمة التي يحملها مضافا اليها الnull character , وفي مثالنا كانت تسعة عناصر-

فمثلاً في المثال السابق عندما اعطينا القيمة “better c” -  والتي تتكون من ثمانية عناصر -  للمتغير str1 فانه سوف يبقى آخر عنصر من المصفوفة من غير أستخدام.

اما في حالة str 2 فان عدد العناصر كان تسعة عناصر بنفس عدد عناصرالstring ولو غيرنا قيمة str 2 وجعلناها “c++” فقط. فان عدد العناصر سوف يتغير ويصبح ثلاثة عناصر+null char 

ومن هنا يتبين لنا ان طريقة الpointer هي طريقة اقتصادية من ناحية الذاكرة والآن لنحاول ان   نعطي str1 القيمة “programming in c++” . ان عدد عناصر str 1 في مثالنا السابق هي عشرة عناصر بينما القيمة التي نحاول ان نعطيها تحتوي على 18 عنصر لذلك فان المتغير str1 سوف يرفض القيمه و ستظهر رسالة خطا تبين ان عدد العناصر اكبر مما ينبغي.

اما بطريقة الpointer فان اعطاء القيمة “programming in c++” للمتغير  str2سوف لن تواجه اي مشاكل وسيتغير عدد عناصر  str2تلقائياً بعد اعطاء القيمة ويصبح 18 عنصر بعدد عناصر القيمة التي يحملها وكما يلي:

*str2+0                                 *str2+17  

p

r

o

g

r

a

m

m

i

n

g

 

i

n

 

c

+

+

\0

ملاحظة :-

يجوز تعريف المتغير باستخدام المصفوفةArray  ثم استخدام عناصره وتغيير قيمتها باستخدام الpointer والعكس صحيح. 

 

 

الصفحة الرئيسية  

     C/C++ تعلم لغة

     شفرات مصدريه

            كــتـب

     مختصرات حاسوبيه

     الـعـــاب

 

ملاحظات و اراء   .  أجعلنا صفحة البداية  .   أضفنا الي مفضلتك

Copyright © 2004 Triple C. All rights reserved