الانتقال إلى المحتوى الرئيسي

معنى اثنين من العلامات النجمية في اللغة ج: شرح مفصل

اثنين من العلامات النجمية ( * * ) هو عامل يستخدم في لغة البرمجة ج للإشارة إلى مؤشرات إلى مؤشرات ، أو مؤشرات مزدوجة. يوفر هذا المشغل القدرة على العمل مع هياكل بيانات أكثر تعقيدا ويبسط الوصول إلى محتويات الذاكرة.

يمكن استخدام المشغل ** عند الإعلان عن المتغيرات والوظائف. عند التصريح عن متغير باستخدام عامل التشغيل * * ، يتم تحديد أن المتغير سيشير إلى مؤشر. أي أن المتغير سيخزن عنوان مؤشر آخر. هذا مفيد بشكل خاص في الحالات التي تحتاج فيها إلى تغيير قيمة المؤشر.

مثال على استخدام المشغل ** :

كثافة العمليات الرئيسية () {

إنت س = 5;

إنت * ص 1 = & س

إنت * * ص2 = & ص1

** ص2 = 10;

برينتف ("القيمة س: ٪ د

"،س) ؛ / / المخرجات "القيمة س: 10"

العودة 0;

}

في هذا المثال ، المتغير س ومؤشرين ص1 و ص2 يتم الإعلان عنها. المؤشر الأول ص1 يشير إلى المتغير س ، والمؤشر الثاني ص2 يشير إلى المؤشر ص1. باستخدام عامل التشغيل * * ، يمكننا تغيير قيمة المتغير س باستخدام المؤشر الثاني ص2.

وهكذا ، وذلك باستخدام اثنين من العلامات النجمية يسمح لك للعمل مع مؤشرات لمؤشرات ويسهل التلاعب الذاكرة في اللغة ج.

  1. اثنين من العلامات النجمية في ج: الوصف الكامل والمعنى
  2. استخدام علامتين نجميتين في إعلان المؤشر
  3. تفريغ المؤشرات عند استخدام علامتين نجميتين
  4. المشغلين مع اثنين من العلامات النجمية: المعنى والتطبيق
  5. اثنين من العلامات النجمية والحساب الثنائي في ج
  6. أمثلة عملية لاستخدام علامتين نجميتين في لغة سي
  7. سؤال وجواب
  8. لماذا نحتاج اثنين من العلامات النجمية في اللغة ج?
  9. ما هي استخدامات المؤشرات للمؤشرات في اللغة ج?
  10. هل من الممكن استخدام مؤشرات لمؤشرات في لغات البرمجة الأخرى?
  11. كيف أعلن متغير مؤشر إلى مؤشر في ج?

اثنين من العلامات النجمية في ج: الوصف الكامل والمعنى

في لغة البرمجة ج ، رمز النجمة " * " له عدة معان ويستخدم في سياقات مختلفة. عندما نتحدث عن علامتين نجميتين "* * " ، يكون لها معنى خاص وهي جزء من المؤشرات إلى المؤشرات.

المؤشرات هي نوع خاص من البيانات المستخدمة لتخزين عنوان الذاكرة حيث يتم تخزين قيمة المتغير. تسمح لك المؤشرات إلى المؤشرات (علامتان نجميتان) بالعمل مع هياكل البيانات متعددة الأبعاد وتخصيص الذاكرة الديناميكية.

مثال على إعلان مؤشر إلى مؤشر:

إنت * * بتر;

في هذا المثال ، نعلن متغير بتر من نوع "مؤشر إلى مؤشر إلى إنت". فإنه يمكن تخزين عنوان الذاكرة حيث يتم تخزين قيمة المؤشر إلى كثافة العمليات. لذلك لدينا مستويين من المراوغة: مستوى واحد للوصول إلى المؤشر إلى إنت والمستوى الثاني للوصول إلى قيمة إنت نفسها.

لاستخدام مؤشر إلى مؤشر ، يجب إجراء إلغاء الرجوع المزدوج (علامتان نجميتان) للوصول إلى قيمة معينة:

قيمة كثافة العمليات = * * بتر;

في هذا المثال ، نقوم بتعيين متغير القيمة للقيمة التي يشير إليها المؤشر إلى المؤشر.

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

استخدام علامتين نجميتين في إعلان المؤشر

في لغة البرمجة ج ، يتم استخدام علامتين نجميتين (**) لإعلان المؤشرات إلى المؤشرات أو المؤشرات إلى صفائف المؤشرات. يتيح لك استخدامها العمل مع هياكل البيانات المعقدة ويوفر المرونة في العمل مع الذاكرة.

إعلان مؤشر مع اثنين من العلامات النجمية يبدو مثل هذا:

إنت * * بتر;

في هذا المثال ، يتم تعريف المتغير "بتر "كمؤشر لمؤشر من نوع"إنت". وهذا هو ، " بتر "يشير إلى مؤشر ، والذي ، بدوره ، يشير إلى قيمة من نوع"إنت".

يمكن أن يكون هذا مفيدا ، على سبيل المثال ، عند العمل مع المصفوفات ثنائية الأبعاد. عندما يتم الإعلان عن مؤشر إلى مؤشر ، يشير كل عنصر مؤشر إلى مجموعة من المؤشرات ، والتي بدورها تشير إلى القيم في مواقع الذاكرة.

النظر في مثال لإعلان مؤشر إلى مجموعة من المؤشرات:

كثافة العمليات * صفيف [5];

كثافة العمليات * * بتر = صفيف;

في هذا المثال ، يتم تعريف المتغير "بتر "كمؤشر لمؤشر من نوع" إنت "، والمتغير" صفيف "هو مجموعة من المؤشرات إلى قيم نوع"إنت". ثم ، نحن تعيين مؤشر" صفيف "إلى متغير" بتر " من أجل أن تكون قادرة على العمل مع البيانات من خلال مؤشر إلى مؤشر.

إن استخدام علامتين نجميتين في إعلان المؤشرات يمنح المبرمج مزيدا من المرونة والفرص للعمل مع هياكل البيانات المعقدة. ومع ذلك ، يتطلب هذا الاستخدام إدارة ذاكرة أكثر دقة وقد يصعب على المطورين المبتدئين فهمها.

تفريغ المؤشرات عند استخدام علامتين نجميتين

في ج ، يتم تمثيل المؤشر إلى المؤشر بعلامتين نجميتين ( * * ) ، مما يشير إلى مؤشر مزدوج. يعد تفريغ المؤشر إلى المؤشر جانبا مهما عند العمل مع المصفوفات ثنائية الأبعاد والسلاسل والذاكرة الديناميكية.

يتيح لك تفريغ المؤشرات باستخدام علامتين نجميتين الوصول إلى القيمة التي يشير إليها المؤشر إلى المؤشر. هذا مفيد بشكل خاص عند العمل مع المصفوفات ثنائية الأبعاد ، حيث يكون كل عنصر من عناصر البعد الثاني مؤشرا لعنصر من البعد الأول. يمكن أيضا استخدام تفريغ المؤشر عند العمل مع السلاسل ، حيث يكون كل عنصر من عناصر السلسلة مؤشرا إلى حرف.

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

مثال على استخدام تفريغ المؤشر عند العمل مع مصفوفة ثنائية الأبعاد:

كثافة العمليات الرئيسية () {

إنت آر[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };

إنت * * بتر = (إنت **)أر ؛ / / تحويل نوع صفيف ثنائي الأبعاد إلى مؤشر إلى مؤشر

إلى عن على (كثافة العمليات أنا = 0; أنا < 3; أنا i) {

إلى عن على (الباحث ي = 0 ؛ ي < 3 ؛ ي++) {

برينتف ("٪د " ، * * بتر) ؛ / / إخراج القيمة التي أشار إليها المؤشر

بتر++; // انتقل إلى المؤشر التالي

}

برينتف("

");

}

العودة 0;

}

في هذا المثال ، يتم تقليل مجموعة ثنائية الأبعاد آر إلى مؤشر إلى مؤشر من نوع كثافة العمليات **. ثم ، باستخدام حلقة ، يتم إخراج قيم عناصر المصفوفة التي تشير إليها المؤشرات إلى المؤشر. في كل مرة تنتقل فيها إلى العنصر التالي ، يتم استخدام عامل إلغاء الرجوع مرتين (**بتر).

يتيح لك تفريغ المؤشرات باستخدام علامتين نجميتين العمل بمرونة مع المؤشرات والوصول إلى عناصر المصفوفات ثنائية الأبعاد والسلاسل والذاكرة المخصصة ديناميكيا. هذا هو مفهوم مهم في اللغة ج التي تحتاج إلى فهم من أجل العمل بفعالية مع المؤشرات.

المشغلين مع اثنين من العلامات النجمية: المعنى والتطبيق

في ال لغة ج ، هناك عامل بعلامتين نجميتين: عامل إلغاء الرجوع إلى المؤشر. يتم استخدامه للحصول على القيمة التي يشير إليها المؤشر.

المؤشرات هي المتغيرات التي تحتوي على عناوين الذاكرة للمتغيرات الأخرى. إنها تسمح لنا بالعمل مع الذاكرة مباشرة ، مما يجعلها أداة لغة ج قوية.

هذا ما يبدو عليه استخدام عامل إلغاء الإحالة:

إنت س = 5 ؛ / / إعلان المتغير س

إنت * بتر = & س / / إعلان مؤشر بتر وتعيين عنوان المتغير س

قيمة كثافة العمليات = *بتر ؛ / / إلغاء الإشارة إلى مؤشر بتر للحصول على قيمة المتغير س

في هذا المثال ، يتم إنشاء متغير س مع القيمة 5. ثم يتم الإعلان عن مؤشر بتر ، والذي يحتوي على عنوان المتغير س. يتم استخدام عامل ديريفيرانس * للحصول على قيمة المتغير المشار إليها من قبل مؤشر بتر.

يمكن أيضا استخدام عامل إلغاء الرجوع لتغيير قيمة المتغير الذي يشير إليه المؤشر. على سبيل المثال:

* بتر = 10 ؛ / / تغيير قيمة المتغير س من خلال مؤشر بتر

في هذا المثال ، يتم تغيير قيمة المتغير س إلى 10 باستخدام عامل ديريفيرانس و بتر المؤشر.

يتم استخدام عامل إلغاء الرجوع أيضا مع عمليات زيادة المؤشر وإنصافه:

أرقام كثافة العمليات[] = {1, 2, 3, 4, 5};

كثافة العمليات * بتر = أرقام;

* بتر++; // زيادة المؤشر بموضع واحد وإلغاء الإشارة إليه (الحصول على قيمة العنصر الأول من المصفوفة)

في هذا المثال ، يتم الإعلان عن مجموعة من الأرقام ومؤشر بتر ، مما يشير إلى العنصر الأول من المصفوفة. * بتر operation عملية يزيد مؤشر بتر من قبل موقف واحد ومن ثم ديريفيرنسز للحصول على قيمة هذا الموقف. وبالتالي ، فإن * بتر returns عملية إرجاع قيمة العنصر الأول من المصفوفة.

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

وضع كل ذلك معا ، المشغل اثنين من النجمة في ج هو عامل مؤشر ديريفيرانس الذي يسمح لك للحصول على القيم التي تشير إلى المؤشرات ، وكذلك تغيير هذه القيم.

اثنين من العلامات النجمية والحساب الثنائي في ج

واحدة من ميزات لغة البرمجة ج هو استخدام رمز النجمة ( * ). ومن المثير للاهتمام ، في بعض الأحيان لا يحدث هذا الرمز مرة واحدة ، ولكن مرتين (**). في هذه المقالة ، سنلقي نظرة على ما تعنيه علامتا النجمة وكيفية ارتباطهما بالحساب الثنائي في لغة سي.

في ال لغة ج ، عادة ما يتم استخدام حرف العلامة النجمية (*) للإعلان عن المؤشرات. المؤشر هو متغير يخزن عنوان موقع الذاكرة حيث توجد قيمة متغير آخر.

إذا في ج نعلن مؤشر إلى مؤشر ، ثم يتم استخدام اثنين من العلامات النجمية (**) لهذا الغرض. يحدث هذا الموقف عندما نحتاج إلى العمل مع صفائف المؤشرات أو المصفوفات متعددة الأبعاد.

أحد استخدامات اثنين من العلامات النجمية هو العمل مع صفائف ثنائية الأبعاد. في هذه الحالة ، يسمح لك المؤشر إلى المؤشر بالوصول إلى عناصر المصفوفة من خلال فهارس مزدوجة. وبالتالي ، تساعد علامتان نجميتان في العمل مع الجداول والمصفوفات.

لفهم العلاقة بين اثنين من العلامات النجمية والحساب الثنائي في ج ، ضع في اعتبارك مثالا. لنفترض أن لدينا مصفوفة ثنائية الأبعاد تحتوي على أعداد صحيحة. نريد إيجاد مجموع كل عناصر هذه المصفوفة.

# تشمل

كثافة العمليات الرئيسية () {

صفيف كثافة العمليات[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

مجموع كثافة العمليات = 0;

الباحث الأول ، ي;

إلى عن على (أنا = 0 ؛ أنا < 3 ؛ أنا i) {

إلى عن على (ي = 0 ؛ ي < 3 ؛ ي++) {

مجموع + = * * (صفيف + ط) + ي;

}

}

برينتف ("مجموع جميع عناصر المصفوفة: ٪ د

"،مجموع);

العودة 0;

}

في هذا المثال ، يتم استخدام علامتين نجميتين للعمل مع مؤشرات لسلاسل مصفوفة ثنائية الأبعاد. باستخدام التعبير *(صفيف + ط) ، نحصل على مؤشر لكل صف من المصفوفة. ثم ، باستخدام العلامة النجمية الثانية ، نصل إلى كل عنصر من عناصر السلسلة ونجد مجموعها.

وهكذا ، اثنين من العلامات النجمية في اللغة ج تسمح لك للعمل مع مؤشرات إلى مؤشرات واستخدامها للعمل مع صفائف متعددة الأبعاد ، بما في ذلك الحساب الثنائي.

لذلك ، باستخدام اثنين من العلامات النجمية في اللغة ج يسمح لك للعمل مع مؤشرات إلى مؤشرات ، وكذلك تنفيذ عمليات معقدة مع صفائف متعددة الأبعاد. إنها أداة قوية تساعد على تنفيذ الخوارزميات المعقدة وهياكل البيانات.

أمثلة عملية لاستخدام اثنين من العلامات النجمية في ج

1 اللغة. إعلان المؤشرات إلى المؤشرات

أحد الاستخدامات الرئيسية لاثنين من العلامات النجمية في لغة ج هو القدرة على إعلان المؤشرات إلى المؤشرات. يتيح لك ذلك إنشاء مؤشرات تشير إلى مؤشرات لنوع بيانات معين.

إنت س = 5;

إنت * ص 1 = & س

إنت * * ص2 = & ص1

.

2. تخصيص الذاكرة الديناميكية للمصفوفات ثنائية الأبعاد

مثال آخر على استخدام علامتين نجميتين في ج هو تخصيص الذاكرة الديناميكية للمصفوفات ثنائية الأبعاد. عند الإعلان عن مصفوفة ثنائية الأبعاد باستخدام علامتين نجميتين ، يمكنك تخصيص ذاكرة لكل صف على حدة.

الصفوف كثافة العمليات = 3;

كثافة العمليات الأعمدة = 5;

كثافة العمليات * * مصفوفة = (كثافة العمليات**)مالوك (الصفوف * حجم (كثافة العمليات*));

ل (إنت أنا = 0 ؛ أنا < الصفوف ؛ أنا i) {

ماتريكس [أنا] = (إنت*)مالوك(كولز * سيزوف (إنت));

}

، يتم تخصيص الذاكرة لكل عنصر من عناصر المصفوفة بشكل منفصل ، مما يسمح لك بإنشاء مصفوفة ثنائية الأبعاد بعدد محدد من الصفوف والأعمدة.

3. تمرير المؤشرات إلى الوظائف

في ج ، يمكن استخدام مؤشرات الوظيفة لتمرير الوظائف كوسائط إلى وظائف أخرى. عند إعلان مؤشر إلى دالة ذات علامتين نجميتين ، يمكنك تحديد نوع قيمة الإرجاع وقائمة بأنواع معلمات الدالة.

الباحث إضافة (الباحث أ ، الباحث ب) {

العودة أ + ب;

}

إنت طرح (إنت أ ، إنت ب) {

العودة أ-ب;

}

حساب الباحث (الباحث أ ، الباحث ب ، الباحث (*العملية) (الباحث ، الباحث)) {

عملية العودة (أ ، ب);

}

كثافة العمليات الرئيسية () {

إنت س = 5;

إنت ذ = 3;

كثافة العمليات النتيجة = حساب (س ، ص ، وإضافة);

العودة 0;

}

.

تقدم هذه المقالة ثلاثة أمثلة عملية لاستخدام علامتين نجميتين في لغة ج: إعلان المؤشرات إلى المؤشرات ، وتخصيص الذاكرة ديناميكيا للمصفوفات ثنائية الأبعاد ، وتمرير المؤشرات إلى الوظائف.

سؤال وجواب

لماذا نحتاج اثنين من العلامات النجمية في اللغة ج?

اثنين من العلامات النجمية في ج تستخدم لإعلان مؤشر إلى مؤشر. تستخدم المؤشرات في ج للعمل مع الذاكرة ، وتسمح لك علامتان نجميتان بإنشاء مؤشرات تشير إلى مؤشرات أخرى.

ما هي استخدامات المؤشرات للمؤشرات في اللغة ج?

يمكن أن تكون المؤشرات إلى المؤشرات في ج مفيدة في حالات مثل تخصيص الذاكرة الديناميكية ، والعمل مع الوظائف التي تعدل المؤشرات التي تم تمريرها إليها ، وبرمجة الذاكرة المشتركة متعددة مؤشرات الترابط. إنها تسمح لك بالعمل بمرونة أكبر مع المؤشرات ونقلها بين الوظائف.

هل من الممكن استخدام مؤشرات لمؤشرات في لغات البرمجة الأخرى?

مفهوم المؤشرات إلى المؤشرات موجود ليس فقط في ج ، ولكن أيضا في بعض لغات البرمجة الأخرى. بعض اللغات ، مثل سي++ ، لها أنواع بيانات مضمنة خاصة بها تقوم بتجريد المؤشرات إلى المؤشرات باستخدام الفئات أو القوالب.

كيف أعلن متغير مؤشر إلى مؤشر في ج?

لإعلان متغير مؤشر إلى مؤشر في ج ، يتم استخدام علامة النجمة المزدوجة قبل اسم المتغير. على سبيل المثال ، لإعلان المتغير 'إنت * * بتر' ، تحتاج إلى كتابة ' إنت * * بتر؛`. هذا يخبر المترجم أن ' بتر ' سيكون مؤشر إلى مؤشر إلى عدد صحيح.