السلام عليكم
هناك أسلوب معروف لكي ترسل أوامر أو نصوص إلى الدالة الرئيسية في البرنامج 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
هل الشرح خاطئ أم انا لا أفهم المؤشرات ؟
