الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

المؤشرات و إرسال الأوامر للبرنامج

بدأه Islamic_Empire في 24 سبتمبر 2008 · 1 رد · 499 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

هناك أسلوب معروف لكي ترسل أوامر أو نصوص إلى الدالة الرئيسية في البرنامج Passing arguments to the main function طبعا من خلال تشغيل البرنامج في نافذة الأوامر دوس

الأسلوب معروف ولكنه يتضمن استخداما للمؤشرات لم أفهمه .

عندما تكتب مثلا في شاشة الدوس :

c:\Test argument1 argument2 argument3

طبعا Test هو اسم برنامجك فيما الأسماء الأخيرة هي نصوص مرسلة لبرنامجك .

الآن نستقبل البيانات عبر الطريقة التالية :

void main(int argc , char *argv[])
{
}

المتغير الأول argc يمثل عدد الأوامر المرسلة في حالتنا ثلاثة زائد اسم البرنامج فيصبح أربعة . جميل مفهوم

المتغير الثاني هو عبارة عن مصفوفة من المؤشرات يشير كل مؤشر لحرف char واضح من التعريف

والحروف هي أول حرف من كل أمر مرسل

أيضا مفهوم

الآن فعلا إذا قمنا بتجربة

 cout << "Number of Elements passed : " << argc << endl;

الناتج كم توقعنا أربعة .

وأيضا :

for( i=0;i < argc;i++)
 {
  cout << "The first char of each element is :" << *argv << endl;
 }

سيظهر لنا الحرف الأول من كل أمر

المعضلة تكمل في الكود التالي :

for( i=0;i < argc;i++)
 {
  cout << "The starting adress of each element is :" << argv << endl;
 }

من المفترض أن يظهر لنا قائمة جميلة بالأرقام Hexadecimal توضح عناوين النصوص

ولكن الناتج :

The starting adress of each element is : argument1
The starting adress of each element is : argument2
The starting adress of each element is   argument3

هل الشرح خاطئ أم انا لا أفهم المؤشرات ؟

#2

هذه تسمى مصفوفة سلاسل الحروف بحيث كل عنصر من هذه المصفوفة هو سلسلة نصية .

في طريقتك السابقة انت تقوم بطباعة قيم عناصر المصفوفة

		cout<<argv;

لطباعة العناوين استخدم العلامة &

		cout<<&argv;

تم تعديل هذه المشاركة بواسطة time1 في 24 سبتمبر 2008 في 23:17

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

مواضيع مشابهة