السلام عليكم...
في لغة السي يلجأ المبرمجون لمثل هذا الكود مرات كثر
int *x; x= malloc(sizeof(int));
أضن الكود يحجز على ال heap ذاكرة للمؤشر x وبالحجم الذي يشغله النوع int .
اﻵن لو كتبت هذا الكود:
float *x; x= malloc(2*sizeof(int));
قمت بتعريف مؤشر من نوع float وحجزت له مساحة ذاكرية بحجم مضاعف للنوع int ...
السؤال:
- ما فاءدة أن يكون المؤشر من نوع float وله مساحة int ! الذي لم أفهمه لماذا نقوم بتعريف نوع للمؤشر اذا كنا سنتحكم بالمساحة التي سنحجزها له!
أرجو أن يكون السؤال واضحا...
أيضا سؤالان آخران لو تكرمتم...
- هل ما يقابل الدالة malloc في السي ++ هو العامل new.. ! وهل يسمى "عامل" أم "معامل" أم "مؤثر" !
السؤال اﻵخر بعيد قليلا عن موضوعنا...
هناك عدة C compilers أو C++ Compiler ..مثلا ميكروسفت لها كومبايلر وهناك مثلا GCC ... سؤالي:
- هل تحتلف هذه المصرّفات (compilers) عن بعضها تماما وتشترك فقط في تطبيق معابير اللغة النضرية فقط!
بمعنى آحر:
هل شركات هذه المصرفات تقرأ معايير(standards) اللغة (كالسي ++ مثلا) ومن ثم تقوم ببناء مصرّف كل ما يقوم به هو "المحافضة" على معايير اللغة المرسومة بشكل نضري!
ربما أستطيع أن أسأل هل أكواد اﻷسمبلي الناتجة من ترجمة كود سي++ بمصرّفين مختلفين تكون مختلفة! أم لا يشترط ذلك!

