<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Static on P01NT</title><link>https://outofsrvc.github.io/ar/tags/static/</link><description>Recent content in Static on P01NT</description><generator>Hugo</generator><language>ar</language><lastBuildDate>Thu, 13 Aug 2026 10:00:00 +0300</lastBuildDate><atom:link href="https://outofsrvc.github.io/ar/tags/static/index.xml" rel="self" type="application/rss+xml"/><item><title>الدوال — الجزء الثاني</title><link>https://outofsrvc.github.io/ar/cworkshop/functions-part-two/</link><pubDate>Thu, 13 Aug 2026 10:00:00 +0300</pubDate><guid>https://outofsrvc.github.io/ar/cworkshop/functions-part-two/</guid><description>&lt;p>بسم الله الرحمن الرحيم.&lt;/p>
&lt;p>بعد أن بنينا حجر الأساس في لغة C وتقسيم الذاكرة والمؤشرات ومقدمة الـ Assembly — نكمل الطريق نحو بنية معرفية كاملة. في هذا المقال نتحدث عن الدوال بطريقة &lt;strong>متقدمة&lt;/strong>، بمرجع أساسي من كتاب K&amp;amp;R، مع تتبع السجلات في الـ Assembly لنرى كيف يمشي الكود في الـ Low-Level.&lt;/p>
&lt;p>&lt;strong>فهرس المقال:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>1.1 نطاق المتغيرات (Variables Scope)&lt;/li>
&lt;li>1.2 ملفات الرأس (Header Files)&lt;/li>
&lt;li>1.3 المتغيرات والدوال الثابتة (Static)&lt;/li>
&lt;li>1.4 العودية (Recursion)&lt;/li>
&lt;/ul>
&lt;h2 id="المكونات-الأساسية-للدوال">المكونات الأساسية للدوال&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>المكوّن&lt;/th>
 &lt;th>الوصف&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;strong>التوقيع (Signature)&lt;/strong>&lt;/td>
 &lt;td>تعريف الدالة: &lt;code>returnType funcName(Parameters) {}&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>الجسم (Body)&lt;/strong>&lt;/td>
 &lt;td>الوظيفة التي تقوم بها الدالة&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>الباراميترات&lt;/strong>&lt;/td>
 &lt;td>قيم الإدخال&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>قيمة الإرجاع&lt;/strong>&lt;/td>
 &lt;td>الناتج الرئيسي&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="نموذج-تنفيذ-دالة">نموذج تنفيذ دالة&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="nf">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="n">b&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">b&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">result&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="الـ-assembly-32-bit">الـ Assembly (32-bit)&lt;/h3>
&lt;p>نستخدم &lt;code>-m32&lt;/code> لتبسيط الشرح (نمط EBP الكلاسيكي الذي تراه في ملايين البرامج القديمة):&lt;/p></description></item></channel></rss>