يعد مؤشر الصفيف أحد أهم المفاهيم في لغة البرمجة سي. هذه بنية بيانات تسمح لنا بالوصول إلى عناصر المصفوفة من خلال عنوانها. تحتوي مؤشرات المصفوفات على العديد من الميزات وتستخدم في العديد من الخوارزميات والبرامج.
لتحديد مؤشر إلى صفيف في اللغة ج ، يتم استخدام بناء الجملة التالي:نوع البيانات * اسم _ التسمية = اسم الصف؛. هنا ، نوع البيانات هو نوع عناصر المصفوفة ، واسم المحدد هو اسم متغير المؤشر ، واسم المصفوفة هو اسم المصفوفة التي يشير إليها المؤشر.
مثال على إعلان مؤشر إلى مجموعة من نوع كثافة العمليات:
إنت * أراي_بتر = صفيف;
في هذا المثال ، يشير مؤشر صفيف إلى العنصر الأول من صفيف الصفيف. يمكننا الوصول إلى عناصر المصفوفة من خلال مؤشر باستخدام عامل الفهرسة []. على سبيل المثال ، مصفوفة[0] هي قيمة العنصر الأول من المصفوفة ، و مصفوفة[1] هي قيمة العنصر الثاني من المصفوفة.
- إعلان مؤشر
- إعلان مؤشر إلى صفيف
- تهيئة مؤشر صفيف
- الوصول إلى عناصر المصفوفة عبر مؤشر
- تغيير عناصر المصفوفة عبر مؤشر
- تمرير صفيف إلى دالة عبر مؤشر
- إرجاع مؤشر إلى مصفوفة من دالة
- تحويل مؤشر إلى مصفوفة إلى مؤشر إلى نوع آخر
- التخصيص الديناميكي للذاكرة لصفيف عبر مؤشر
- سؤال وجواب
- كيف يمكنني إنشاء مؤشر إلى صفيف في ج?
- لماذا نحتاج مؤشرات إلى صفائف في اللغة ج?
- كيف يمكنني الوصول إلى عناصر الصفيف عن طريق المؤشر في ج?
- هل من الممكن تغيير حجم المصفوفة التي يشير إليها المؤشر في ج?
- كيف يمكنني تمرير مؤشر إلى صفيف إلى وظيفة في ج?
إعلان مؤشر
المؤشر إلى صفيف في ج هو متغير يخزن عنوان العنصر الأول من المصفوفة.
بناء الجملة لإعلان مؤشر إلى صفيف كما يلي:
نوع البيانات * اسم _ المسمى_;
أين
- : نوع البيانات هو نوع بيانات عناصر المصفوفة;
- اسم_مسمى هو اسم المؤشر.
أمثلة على إعلان المؤشرات إلى المصفوفات:
| إعلان | الوصف |
|---|---|
من كثافة العمليات * ع; | مؤشر إلى مجموعة من الأعداد الصحيحة. |
شار * شارع; | مؤشر إلى مجموعة من الأحرف. |
تعويم * آر; | مؤشر إلى مجموعة من الأرقام الحقيقية. |
لاحظ أن علامة * قبل اسم المؤشر تشير إلى أن المتغير الذي يتم الإعلان عنه سيكون مؤشرا.
إعلان مؤشر إلى صفيف
في ج ، يمكنك إعلان مؤشر إلى مصفوفة ، وهو متغير يخزن عنوان العنصر الأول من المصفوفة. من أجل إعلان مؤشر إلى صفيف ، يجب عليك تحديد نوع بيانات عناصر الصفيف ، متبوعا بعلامة النجمة واسم المؤشر.
مثال على إعلان مؤشر إلى مصفوفة:
إنت * بتر;مشيرا إلى عناصر صفيف صحيح.
يمكن تعيين قيمة المؤشر إلى المصفوفة على عنوان العنصر الأول من المصفوفة أو الحصول عليها نتيجة لأداء أي عمليات باستخدام المؤشرات.
مثال على تعيين قيمة المؤشر:
إنت آر[] = {1, 2, 3, 4, 5};
إنت * بتر = أر;
.
يمكن استخدام العنوان المخزن في مؤشر الصفيف للوصول إلى عناصر الصفيف:
عنصر كثافة العمليات = بتر[2];- فهرس عنصر الصفيف.
يمكنك أيضا استخدام بناء جملة المؤشر وزيادة قيمته للإشارة إلى العنصر التالي من المصفوفة:
عنصر كثافة العمليات = * بتر;حيث يفتح حرف النجمة المؤشر ويحصل على القيمة في عنوانه.
تهيئة مؤشر صفيف
مؤشر إلى صفيف في ج هو متغير يخزن عنوان بداية الصفيف. يمكن إجراء تهيئة مؤشر إلى مصفوفة بعدة طرق.
1. التهيئة عن طريق تحديد عنوان العنصر الأول من المصفوفة مباشرة:
إنت أر[5] ؛ / / إعلان صفيف
الباحث * بتر ؛ / / إعلان مؤشر إلى كثافة العمليات
بتر = & أر [0] ؛ / / يشير مؤشر بتر الآن إلى العنصر الأول من مجموعة أر
2. التهيئة باستخدام صفيف ومشغل التقاط العنوان:
إنت آر[5] = {1, 2, 3, 4, 5}; // إعلان وتهيئة صفيف
الباحث * بتر ؛ / / إعلان مؤشر إلى كثافة العمليات
بتر = & أر [0] ؛ / / يشير مؤشر بتر الآن إلى العنصر الأول من مجموعة أر
3. التهيئة عند إعلان مؤشر:
إنت آر[5] = {1, 2, 3, 4, 5}; // إعلان وتهيئة صفيف
إنت * بتر = أر; // إعلان مؤشر إلى إنت وتهيئته مع عنوان العنصر الأول من مجموعة أر
4. تهيئة مؤشر إلى مصفوفة متعددة الأبعاد:
إنت آر[2][3] = {{1, 2, 3}, {4, 5, 6}}; // إعلان وتهيئة مصفوفة ثنائية الأبعاد
الباحث (*بتر) [3] ؛ / / إعلان مؤشر إلى سطر واحد من صفيف ثنائي الأبعاد
بتر = أر; // يشير مؤشر بتر الآن إلى الصف الأول من مجموعة أر
في كل حالة من هذه الحالات ، يرتبط المؤشر بعنوان العنصر الأول من المصفوفة ويمكن استخدامه للوصول إلى جميع عناصر هذه المصفوفة.
الوصول إلى عناصر المصفوفة عبر مؤشر
في ال لغة ج ، يمكن الوصول إلى عناصر المصفوفة باستخدام المؤشرات. المؤشر هو متغير يخزن عنوان الذاكرة حيث يوجد العنصر الأول من المصفوفة.
للوصول إلى عناصر المصفوفة من خلال مؤشر ، تحتاج إلى تنفيذ عدة خطوات:
- حدد المؤشر إلى نوع البيانات المطلوب.
- قم بتعيين عنوان العنصر الأول من المصفوفة إلى المؤشر.
- باستخدام عملية ديريفيرانس ، احصل على قيمة عنصر صفيف.
مثال على الكود:
إنت آر[5] = {10, 20, 30, 40, 50};
إنت * بتر = أر ؛ / / تحديد مؤشر إلى إنت وتعيينه عنوان العنصر الأول من المصفوفة
إلى عن على (كثافة العمليات أنا = 0; أنا < 5; أنا i) {
برينتف ("قيمة عنصر آر [٪د]: ٪ د
"،أنا ، * بتر);
بتر++; // نقل المؤشر إلى العنصر التالي من المصفوفة
}
في هذا المثال ، يتم إنشاء مجموعة أر من 5 عناصر إنت. ثم يتم تحديد مؤشر بتر إلى نوع إنت ويتم تعيين عنوان العنصر الأول من مجموعة لذلك. في الحلقة ، يتم إخراج قيم عناصر الصفيف من خلال مؤشر بتر ، ثم يتم نقل المؤشر إلى العنصر التالي باستخدام عملية الزيادة. وبالتالي ، فإننا نذهب بالتتابع من خلال جميع عناصر المصفوفة.
باستخدام المؤشرات ، لا يمكنك الوصول إلى عناصر المصفوفة فحسب ، بل يمكنك أيضا تغيير قيمها:
إنت آر[5] = {10, 20, 30, 40, 50};
إنت * بتر = أر;
إلى عن على (كثافة العمليات أنا = 0; أنا < 5; أنا i) {
* بتر = * بتر * 2 ؛ / / ضرب قيمة عنصر بنسبة 2
بتر++;
}
في هذا المثال ، يتم ضرب كل عنصر من عناصر المصفوفة في 2 باستخدام عملية إلغاء الرجوع. بعد تنفيذ الحلقة ، ستكون جميع عناصر المصفوفة متساوية ، على التوالي 20, 40, 60, 80, 100.
يتيح لك استخدام المؤشرات للوصول إلى عناصر المصفوفة العمل بكفاءة مع المصفوفات وإجراء عمليات مختلفة على عناصرها.
تغيير عناصر المصفوفة عبر مؤشر
في ج ، المصفوفات هي سلسلة من عناصر نوع معين من البيانات الموضوعة في الذاكرة. عند العمل مع المصفوفات ، يمكنك استخدام المؤشرات للوصول إلى عناصر الصفيف وتعديلها.
لتغيير عناصر المصفوفة من خلال مؤشر ، يجب عليك:
- قم بتعريف مؤشر لنوع عناصر المصفوفة.
- قم بتعيين عنوان العنصر الأول من المصفوفة إلى المؤشر.
- الوصول إلى عناصر الصفيف من خلال مؤشر وتغيير قيمها.
نموذج التعليمات البرمجية:
# تشمل
كثافة العمليات الرئيسية () {
إنت آر[5] = {1, 2, 3, 4, 5};
إنت * بتر = أر ؛ / / إعلان مؤشر وتعيين عنوان العنصر الأول من المصفوفة
// تغيير عناصر المصفوفة من خلال المؤشر
* بتر = 10 ؛ / / تغيير العنصر الأول من المصفوفة
* (بتر + 2) = 30; // تغيير العنصر الثالث من المصفوفة
// عرض العناصر المتغيرة للمصفوفة
برينتف ("٪د
"،آر آر [0]) ؛ / / 10
برينتف ("٪د
"،آر [2]) ؛ / / 30
العودة 0;
}
. أخيرا ، يتم عرض عناصر المصفوفة المعدلة عن طريق الوصول إليها بواسطة الفهارس.
عند استخدام المؤشرات لتغيير عناصر المصفوفة ، من الضروري الانتباه إلى حقيقة أن المؤشر يشير إلى العناوين الصحيحة في الذاكرة. يمكن أن يؤدي الاستخدام غير السليم للمؤشرات إلى أخطاء في البرنامج أو تلف البيانات.
تمرير صفيف إلى دالة عبر مؤشر
في ال لغة البرمجة ج ، من الممكن تمرير مصفوفة إلى دالة باستخدام مؤشر. هذا يسمح لك لتمرير إشارة إلى مجموعة إلى وظيفة ، بدلا من نسخة منه ، والتي يمكن أن تكون مفيدة عند العمل مع صفائف كبيرة وحفظ الذاكرة.
لتمرير مصفوفة إلى دالة عبر مؤشر ، اتبع الخطوات التالية:
- تحديد وظيفة تأخذ مؤشر إلى صفيف كوسيطة.
- قم بتعريف وتهيئة مصفوفة داخل الوظيفة التي سيتم تمرير المصفوفة إليها.
- تمرير مؤشر إلى صفيف كوسيطة عند استدعاء الدالة.
- داخل الوظيفة ، يمكنك استخدام مؤشر للوصول إلى عناصر الصفيف وتعديلها.
مثال على تمرير صفيف إلى دالة عبر مؤشر:
# تشمل
void modify_array(int *arr, int size) {
printf("Original array: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("
Modified array: ");
for (int i = 0; i < size; i++) {
arr[i] *= 2;
printf("%d ", arr[i]);
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
modify_array(arr, size);
return 0;
}
принимает указатель на массив и его размер. داخل الدالة ، يتم إخراج المصفوفة الأصلية ، ثم يتم ضرب كل عنصر من عناصر المصفوفة في 2. بعد ذلك ، يتم إخراج المصفوفة المعدلة.
ويتم تمرير حجمها.
نتيجة لتنفيذ البرنامج ، سيتم إخراج ما يلي:
صفيف الأصلي: 1 2 3 4 5
تعديل مجموعة: 2 4 6 8 10
وبالتالي ، فإن تمرير مصفوفة إلى دالة عبر مؤشر يسمح لك بتعديل قيم عناصرها واستخدام المؤشر للوصول إلى عناصر المصفوفة.
إرجاع مؤشر إلى مصفوفة من دالة
في لغة البرمجة سي ، يمكنك إرجاع المؤشرات إلى المصفوفات من الوظائف. يتيح لك ذلك نقل المصفوفات بين الوظائف دون الحاجة إلى نسخ البيانات.
يمكن إرجاع مؤشر إلى صفيف بالإعلان عن نوع قيمة إرجاع الدالة كمؤشر إلى صفيف. على سبيل المثال:
كثافة العمليات (*اسم الوظيفة ()) [10] {
ثابت كثافة العمليات صفيف[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
العودة والصفيف
}
.
لاستخدام المؤشر الذي تم إرجاعه إلى مصفوفة ، يجب تعيينه لمتغير مؤشر له نوع متوافق ، على سبيل المثال:
كثافة العمليات (*بتر) [10] = اسم الوظيفة();
هو مؤشر إلى مجموعة من 10 أعداد صحيحة ، ويمكننا استخدامه للوصول إلى عناصر المصفوفة:
ل (إنت أنا = 0 ؛ أنا < 10 ؛ أنا {) {
برينتف ("٪د " ، (*بتر) [ط]);
}
سيكون إخراج البرنامج على النحو التالي:
0 1 2 3 4 5 6 7 8 9
لإلغاء الرجوع إلى المؤشر والوصول إلى المصفوفة.
وبالتالي ، فإن إرجاع مؤشر إلى صفيف من دالة يسمح لك بنقل المصفوفات والعمل بها بكفاءة في ج.
تحويل مؤشر إلى مصفوفة إلى مؤشر إلى نوع آخر
عند العمل مع المصفوفات في لغة البرمجة سي ، تتمثل إحدى المهام الشائعة في تغيير نوع البيانات المشار إليه بواسطة مؤشر الصفيف. للقيام بذلك ، يتم استخدام تحويل نوع المؤشر.
يتيح لك تحويل مؤشر إلى مصفوفة إلى مؤشر إلى نوع آخر إجراء عمليات باستخدام بيانات من مصفوفة باستخدام نوع بيانات مختلف. على سبيل المثال ، إذا كان لدينا مجموعة من الأعداد الصحيحة ونريد العمل مع عناصر هذه المصفوفة كأرقام فاصلة عائمة ، فسنحتاج إلى إرسال مؤشر إلى المصفوفة إلى مؤشر إلى نوع بيانات النقطة العائمة.
على أرقام الفاصلة العائمة ، يمكننا كتابة:
إنت آر[5] = {1, 2, 3, 4, 5};
تعويم * بتر = (تعويم*) أر;
، لكنه يفسر عناصره على أنها أرقام فاصلة عائمة.
من المهم ملاحظة أن إرسال نوع المؤشر إلى مصفوفة يمكن أن يؤدي إلى نتائج غير مرغوب فيها إذا لم تأخذ في الاعتبار حجم عناصر المصفوفة ومحاذاة البيانات. في بعض الحالات ، يمكن أن يؤدي ذلك إلى أخطاء في البرنامج أو سلوك غير متوقع. لذلك ، عند تحويل مؤشر إلى مصفوفة إلى مؤشر إلى نوع آخر ، يجب أن تكون حذرا وأن تأخذ في الاعتبار تفاصيل أنواع البيانات.
التخصيص الديناميكي للذاكرة لصفيف عبر مؤشر
تخصيص الذاكرة الديناميكية لمجموعة في لغة البرمجة ج لا يمكن أن يؤديها باستخدام مؤشر إلى مجموعة. يتيح لك ذلك إنشاء صفائف ذات حجم متغير يمكن تعديلها أثناء تنفيذ البرنامج.
لتخصيص الذاكرة ديناميكيا لصفيف في ج ، يتم استخدام وظيفة مالوك. يقوم بإرجاع مؤشر إلى الذاكرة المخصصة أو فارغة في حالة حدوث خطأ. تأخذ الدالة وسيطة واحدة-عدد البايتات التي سيتم تخصيصها للمصفوفة.
يوجد أدناه مثال رمز يوضح تخصيص الذاكرة الديناميكية لصفيف عبر مؤشر:
# تشمل
# تشمل
كثافة العمليات الرئيسية () {
حجم كثافة العمليات;
إنت *أر;
برينتف ("أدخل حجم المصفوفة:");
المسح الضوئي ("٪د " ، والحجم);
// تخصيص الذاكرة للصفيف
أر = (إنت *) مالوك (حجم * حجم (إنت));
إذا (آر = = لاغية) {
برينتف ("خطأ في تخصيص الذاكرة");
العودة 0;
}
// تهيئة عناصر المصفوفة
ل (إنت أنا = 0 ؛ أنا < الحجم ؛ أنا i) {
أر [أنا] = أنا + 1;
}
// إخراج عناصر المصفوفة
ل (إنت أنا = 0 ؛ أنا < الحجم ؛ أنا i) {
برينتف ("٪د" ، أر[ط]);
}
// تحرير الذاكرة
مجانا;
العودة 0;
}
في هذا المثال ، يتم طلب حجم المصفوفة أولا من المستخدم. ثم يتم استدعاء وظيفة مالوك لتخصيص الذاكرة مع حجم حجم * سيزوف (إنت). يتم ضرب قيمة الحجم حسب الحجم (إنت) للحصول على العدد الإجمالي للبايتات التي سيتم تخصيصها للمصفوفة. ثم يتم تحويل مؤشر أر إلى إنت* نوع من أجل أن تكون قادرة على العمل مع عناصر مجموعة.
بعد تخصيص الذاكرة ، تتم تهيئة عناصر المصفوفة بقيم من 1 إلى الحجم. ثم يتم عرض عناصر المصفوفة على الشاشة. أخيرا ، يتم تحرير الذاكرة باستخدام الوظيفة المجانية لمنع تسرب الذاكرة.
التخصيص الديناميكي للذاكرة لمصفوفة عبر مؤشر يجعل من السهل إنشاء صفائف ذات حجم متغير واستخدام الذاكرة بكفاءة.
سؤال وجواب
كيف يمكنني إنشاء مؤشر إلى صفيف في ج?
لإنشاء مؤشر إلى صفيف في ج ، استخدم بناء الجملة التالي: نوع البيانات * اسم المتغير. على سبيل المثال ، لإنشاء مؤشر إلى صفيف صحيح ، يمكنك كتابة إنت * بتر;
لماذا نحتاج مؤشرات إلى صفائف في ج?
مؤشرات إلى المصفوفات في ج تسمح لنا بالعمل مع المصفوفات بشكل أكثر مرونة وكفاءة. إنها تسمح لك بتمرير المصفوفات إلى الوظائف دون نسخ البيانات ، وتغيير محتويات المصفوفات حسب المؤشر ، وأكثر من ذلك بكثير.
كيفية الوصول إلى عناصر الصفيف حسب المؤشر في ج?
للوصول إلى عناصر الصفيف حسب المؤشر في ج ، يمكنك استخدام عامل إلغاء الرجوع"*". على سبيل المثال ، إذا كان لديك مؤشر إلى صفيف صحيح بتر ، ثم للوصول إلى العنصر الأول تحتاج إلى كتابة *بتر ، إلى الثانية — *(بتر + 1) وهلم جرا.
هل من الممكن تغيير حجم المصفوفة التي يشير إليها المؤشر في ج?
لا ، لا يمكنك تغيير حجم المصفوفة التي يشير إليها المؤشر في ج. يتم تحديد حجم الصفيف عندما يتم الإعلان عنه ولا يتغير أكثر. إذا كنت بحاجة إلى تغيير حجم المصفوفة ، فسيتعين عليك إنشاء مصفوفة جديدة ونسخ البيانات من المصفوفة القديمة إليها.
كيف يمكنني تمرير مؤشر إلى صفيف إلى وظيفة في ج?
لتمرير مؤشر إلى مصفوفة إلى دالة في ج ، تحتاج إلى إعلان معلمة الوظيفة كنوع البيانات * اسم المعلمة. على سبيل المثال ، إذا كان لديك فو الفراغ(إنت *أر) وظيفة ، ثم لتمرير مؤشر إلى صفيف لهذه الوظيفة ، وهو ما يكفي لكتابة فو(بتر) ، حيث بتر هو مؤشر إلى صفيف.