ahmed.o.mohamed

اختبر قدراتك في C/CPP - الحلقة الثانية, الجزء الرابع

5 ردود في هذا الموضوع

السلام عليكم

الحلقة الأولى.

الحلقة الثانية - الجزء الأول.

الحلقة الثانية - الجزء الثاني.

الحلقة الثانية - الجزء الثالث.

مرحبا بكم في الجزء الرابع من الحلقة الثانية من سلسلة اختبر قدراتك, قمتُ بتقسيم الحلقة الثانية إلى عدة أجزاء, مُرتبة حسب الصعوبة.

الحلقة الثانية خاصة بالمؤشرات.

الإختبار الثاني (الجزء الرابع ) :

ما هي الأنواع التي تقابل الكتابات التالية :

int *t[5][];
int (*t)[5][];
int (*f)(int, int *t[][5]);
int (*(*f)(int, void *))[5];
int (*(*)(int, void *))[5];

سأضع حل السؤال بعد إنتهاء عرض المحاولات.

3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ما هذه التصريحات يا أحمد, لم أستعملها و لن أستعملها ما حييت :wacko:

int *t[5][];

إذا لم يكن التصريح خاطئ, فمصفوفة مؤشرات ثنائية البعد ب 5 أعمدة

int (*t)[5][];

نفس الشيء

int (*f)(int, int *t[][5]);

مؤشر دالة تعيد عدد صحيح و تأخذ وسائط: عدد صحيح و جدول مصفوفات أحادية البعد كل مصفوفة بخمسة مؤشرات int

int (*(*f)(int, void *))[5];

مصفوفة بخمس مؤشرات لدالة تعيد int و تأخذ وسائط: عدد صحيح + مؤشر void

int (*(*)(int, void *))[5];

أظنه خطأ, إذا كان ذلك التصريح صحيح, فيعني أن هذا صحيح

int (*(*)())[5]

و هو تصريح غريب جدا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

فلنبدأ على بركة الله أخي أحمد

int *t[5][];

عبارة خاطئة لأننا لم نحدد حجم أعمدة المصفوفة

|error: array type has incomplete element type|

العبارة الصحيحة أن نكتب هكذا مثلا smile.gif

int *t[][5]

ولكن لا ننسى أن نعطى المؤشرات قيما في البداية حتى يتعرف على عدد أسطر المصفوفة

كمثال

#include <stdio.h>

int main()
{

int a[5]={5,10,15,20,25};
int *t[][5]={[1]={&a[0],&a[1],&a[2],&a[3],&a[4]}}; // المجموع 10 مؤشرات
printf("%d",*t[1][4]);

return 0;
}

int *t[][5]

=> مصفوفة ثنائية البعد لمؤشرات كل بعد يتكون من 5 أعمدة من نوع int

int (*t)[5][];

نفس الخطأ الأول يتكرر بالنسبة لهذه المصفوفة

=> مؤشر لمصفوفة ثنائية البعد كل بعد يتكون من 5 أعمدة من نوع int

int (*f)(int, int *t[][5]);

=> مؤشر لدالة من نوع int تستقبل كوسائط int و مصفوفة ثنائية البعد لمؤشرات كل بعد يتكون من 5 أعمدة من نوع int

int (*(*f)(int, void *))[5];

=> مؤشر لجدول يتكون من 5 مؤشرات لدوال من نوع int تستقبل كوسائط int و مؤشر من نوع void أو (مؤشر عام)

int (*(*)(int, void *))[5];

=> نفس الحالة لكن هناك خطأ في التصريح لأننا لم نسمي مؤشر الدالة

أتمنى أن تكون إجاباتي صحيحةhappy.gif

وبالتوفيق للجميع

تم تعديل بواسطه مومو (momo)
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لا أزيد على ما قاله الأخ momo, فعلا إجاباتك صحيحة 100%.

+1

بارك الله فبك.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

تم منح النقاط للمشاركات المفيدة و حذف الردود الغير مفيدة, حفاظا على تنسيق الموضوع.

يُغلق.

أراكم في الجزء الخامس من الحلقة الثانية.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .