ماهي المواضيع المتقدمة في السي ؟

السلام عليكم

عندما أبحث عن المواضيع المتقدمة في لغة السي أجد مواضيع حول

STRUCTERS

TREE

TRI

RECURSION

...

لاكن كل هده الأنواع من المواضيع, ادا كنت متمكن من أساسيات اللغة ستتعلمها بسرعة

  • هده المواضيع تتعلق بالخورزميات أكتر مما تتعلق بالسي.

ما أبحت عنه أنا مواضيع تتعلق بلغة السي لاأعرف ما هي هاته المواضيع

لاكن قرائتها تجعلك تفهم كيف تعمل بعض الأمور في السي

يعني تصبح أنت كذلك قادر على كتابة دوال الادخال والاخراج

دوال التحكم بالذاكرة ...

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

حسبما أعرف، الـ classes و الـ Functions

كلاسات في C !

ومتى كانت ال Functions من المواضيع المتقدمة !

لو تمعنت في الموضوع جيدا لما كتبت هدا الرد

أعتذر، ظننتها في السي ++ :(

وكما قلت، ﻻ زلت مبتدأ!

لا مشكلة أخي :)

المهم أردت الافادة بما تعلم

لا اعلم اشياء مثل المؤشرات (Pointers)

كيف تتعامل مع الذاكرة ال Heap و Stack و ما الفرق بينهما

وجدت لك صفحة

لا

عندما دكرت أنا TREE يعني أنني تجاوزت مسألة المؤشرات و STACK AND HEAP

mujahid أضف ردا

يعني تصبح أنت كذلك قادر على كتابة دوال الادخال والاخراج

إذا كان ما تقصده كتابة دوال مثل: "printf"، أو "scanf"، فهذه الدوال يمكن كتابتها بغلة التجميع ثم إعلان رأس الدالة فقط.

وهذا مثال على رأس دالة مصغرة عن "printf":

void myprint(char[]*);

في الشفرة السابقة كتبنا رأس دالة لتبين معاملات هذه الدالة، وهذا المعامل هو مؤشر إلى مصفوفة رموز. لذا عند كتابة هذه الدالة بلغة التجميع نضع في الحسبان أن معامل هذه الدالة (مؤشر) سيرسل عن طريق المسجل %rdi (أو edi في أنظمة 32 بت) - وهذا حسب أنظمة لينكس، ولا علم لي إذا كانت بقية الأنظمة تتبع نفس الأسلوب أم لا-.

وعند ترجمة البرنامج نقوم بكتابة على هذه الشاكلة:

gcc my_c_file.c my_assembly_file.s -o my_program

وهذا بستخدام مصرف جنو (الذي يعمل في لينكس).

وهناك طريقة أخرى لا علم لي بها جيدًا وهي بستخدام الكلمة المحجوزة "asm"؛ فبواستطها يمكن كتابة شفر التجميع داخل شفرة السي.

والله أعلم.

نعم مثل PRINTF

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

في كلتا الطريقتين هناك اعتماد مباشر للاسمبلي

السؤال هو كيف تمت كتابة الدالة printf ,هل تم استخدام احدى الطرقتين ؟

  • أنا لا أبحت عن طرق تم ابتكارها من طرف شخص أو مجموعة , ما أريده هو ما تحتوي عليه السي نفسها

مسألة أخرى وهي

عندما أدخل للملفات الرأسية للمكتبات القياسية في vs

صراحة لا أفهم شيئ , أجد أنهم يعتمدون في الكتابة على الرمز _ لا أعلم لمادا ؟

ما المشكلة

هل يتطلب الأمر مستوى أحترافي ؟

أم يتم كتابة تلك الملفات لكي لا يتم فهمها؟

أم أن الأمر عادي فقط أنا أردت تعقيده ؟

أم أن الأمر عادي فقط أنا أردت تعقيده ؟

لا أعلم كثيرًا عن هذا ولكن أظنه كذلك. فاستخدام الشرطة السفلية ممكن في تسمية المتغيرات والدوال.

والله أعلم.

صراحة هدا هو مشكل التعلم من الانترنت ,لايوجد منهج تتبعه...

ممكن تعليقات جزاكم الله خيرا

ماهي المواضيع المتقدمة في لغة السي ؟

هل كتابة دالة للادخال يتم بواسطة الاسمبلي أم السي نفسها ؟؟

لغة السي هي نظام هيكلي تحكم تدفق سير البرنامج (الجمل الشرطية، والإجراءات، والدوال)، وفيها بعض أساليب التعامل المختصرة (العلمليات الحسابية، وتبدال القيم بين المتغيرات).

وعدى ذلك فإن كل ما تنفذه السي هو بلغة التجميع.

هل كتابة دالة للادخال يتم بواسطة الاسمبلي أم السي نفسها ؟؟

تكتب بلغة التجيمع داخل السي، مثل:

int main (int argc,char *argv[]) {
static char bsm[]="By the name of Allah\n";
char len=21;
 asm ("movq $4,%%rax;\
          movq $1,%%rbx;\
          int $0x80;"     
          :
          :"c"(&bsm),"d"(len)
          );
     return 0;
}