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

كيفية إخراج مؤشر في ج: نصائح مفيدة وأمثلة التعليمات البرمجية

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

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

إنت * بتر;

قيمة الباحث = 10;

بتر = والقيمة

برينتف ("قيمة المؤشر: ٪ ف" ، بتر);

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

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

كيفية إخراج مؤشر في ج

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

. هنا مثال على استخدام هذا المحدد:

عدد الباحث = 42;

كثافة العمليات * مؤشر = & عدد

برينتف ("قيمة المؤشر: ٪ ف" ، مؤشر);

.

. هنا مثال:

عدد الباحث = 42;

كثافة العمليات * مؤشر = & عدد

برينتف ("قيمة المتغير المشار إليه بواسطة المؤشر: ٪ د" ، * المؤشر);

.

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

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

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

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

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

"،*المؤشر);

مؤشر++;

}

للإشارة إلى العنصر التالي من المصفوفة.

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

الفهرس في ج: المفاهيم الأساسية

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

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

يعلن مؤشر إلى متغير نوع كثافة العمليات.

تهيئة مؤشر بتر مع عنوان المتغير س.

يعين المتغير س القيمة التي يشير إليها مؤشر بتر.

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

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

مزايا استخدام المؤشرات

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

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

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

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

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

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

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

كيفية إعلان مؤشر في ج

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

لإعلان مؤشر في ج ، يتم استخدام عامل التشغيل " * " ، مما يشير إلى أن المتغير هو مؤشر. على سبيل المثال:

الباحث * بتر ؛ / / إعلان مؤشر إلى عدد صحيح

تعويم * فبتر ؛ / / إعلان مؤشر إلى العائمة

- رقم النقطة شار * كبتر; // إعلان مؤشر إلى حرف

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

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

عدد الأسطوانات = 42;

كثافة العمليات * بتر = # / / تعيين عنوان المتغير الأسطوانات إلى المؤشر

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

قيمة الباحث = *بتر ؛ / / الحصول على القيمة على العنوان المشار إليه بواسطة بتر

برينتف ("٪د " ، القيمة) ؛ / / إخراج القيمة 42

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

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

كيفية الحصول على قيمة المؤشر

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

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

"'ج

# تشمل

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

إنت س = 10;

إنت * بتر = & س

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

"،س);

برينتف ("عنوان المتغير س: ٪ ص

"،&س);

برينتف ("قيمة المؤشر بتر: ٪ ص

"،بتر);

برينتف ("القيمة في عنوان مؤشر بتر: ٪ د

"،*بتر);

العودة 0;

}

"`

في هذا المثال ، يتم الإعلان عن المتغير `س` ، الذي يحتوي على القيمة 10. ثم يتم الإعلان عن المؤشر ' بتر ` ، الذي يشير إلى المتغير` س `باستخدام عنوان أخذ المشغل ('&').

في سطر التعليمات البرمجية " برينتف ("القيمة في عنوان المؤشر بتر: ٪ د

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

سيكون إخراج البرنامج على النحو التالي:

"`

قيمة المتغير س: 10

عنوان المتغير س: 0 * 7 د. أ 2 د. ب 1234 ج

قيمة مؤشر بتر: 0 * 7 قدم 2 دينار بحريني 1234 ج

القيمة في عنوان مؤشر بتر هي 10

"`

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

كيفية تغيير قيمة المؤشر

يمكنك تغيير قيمة المؤشر في ج عن طريق تعيين قيمة جديدة للمؤشر أو تغيير القيمة التي يشير إليها المؤشر.

لتغيير قيمة المؤشر ، يمكنك استخدام الطرق التالية:

  • قم بتعيين قيمة جديدة للمؤشر باستخدام عامل التعيين (=).
  • قم بتغيير القيمة التي يشير إليها المؤشر باستخدام عامل إلغاء الإحالة (*).

لنلق نظرة على مثال لاستخدام هذه الأساليب:

# تشمل

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

قيمة الباحث = 10;

كثافة العمليات * ع = & القيمة

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

"،القيمة);

// تغيير القيمة المشار إليها بواسطة المؤشر

* ع = 20;

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

"،القيمة);

// تعيين قيمة جديدة للمؤشر

إنت نيوفاليو = 30;

ع = & جديد_قيمة;

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

"،قيمة جديدة);

العودة 0;

}

يتم تعيين قيمة جديدة باستخدام عامل التعيين. يتم عرض قيمة هذا المتغير أيضا على الشاشة.

كيفية إخراج القيمة التي يشير إليها المؤشر

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

نموذج التعليمات البرمجية:

# تشمل

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

عدد الباحث = 10;

كثافة العمليات * بتر = & عدد

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

"،رقم);

برينتف ("عنوان رقم المتغير: ٪ ص

"،ورقم);

برينتف ("القيمة التي أشار إليها المؤشر * بتر: ٪ د

"،*بتر);

العودة 0;

}

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

نتيجة تنفيذ البرنامج:

  1. قيمة متغير الرقم: 10
  2. عنوان المتغير: 0 * 7 د. أ 23062 ب 6 ج
  3. القيمة التي أشار إليها المؤشر * بتر :10

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

أمثلة التعليمات البرمجية باستخدام المؤشرات

مثال 1:

# تشمل

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

إنت س = 10;

إنت * بتر = & س

printf("Значение переменной x: %d

", x);

printf("Адрес переменной x: %p

", ptr);

return 0;

}

Пример 2:

#include

int main() {

int numbers[] = {1, 2, 3, 4, 5};

int* ptr = numbers;

printf("Элементы массива numbers: ");

for (int i = 0; i < 5; i++) {

printf("%d ", *(ptr + i));

}

return 0;

}

Пример 3:

#include

void swap(int* a, int* b) {

int temp = *a;

*a = *b;

*b = temp;

}

int main() {

int x = 5;

int y = 10;

printf("Значения до обмена: x = %d, y = %d

", x, y);

swap(&x, &y);

برينتف ("Значения после обмена: س = ٪ د ، ص = ٪ د

"،س ، ص);

العودة 0;

}

Пример 4:

# تشمل

إنت * كريتيراي (حجم إنت) {

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

ل (إنت أنا = 0 ؛ أنا < الحجم ؛ أنا i) {

* (صفيف + أنا) = أنا + 1;

}

عودة صفيف;

}

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

إنت * أرقام = كريتيراي (5);

برينتف ("Numbers أرقام:");

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

برينتف ("٪د " ، *(أرقام + ط));

}

مجانا (أرقام);

العودة 0;

}

Пример 5:

# تشمل

اكتببنية الدفاع {

إنت إكس;

إنت ذ;

} نقطة;

معدل الفراغ (نقطة * نقطة ، إنت نيوكس ، إنت نيوي) {

نقطة - > س = نيوكس;

نقطة - > ص = نيوي;

}

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

النقطة ص;

ص. س = 2;

ص = 3;

برينتف ("Исходная точка: س = ٪ د ، ص = ٪ د

"،ص. س ، ص. ص);

نقطة التعديل (&ص, 5, 7);

برينتف ("Измененная точка: س = ٪ د ، ص = ٪ د

"،ص. س ، ص. ص);

العودة 0;

}

Пример 6:

# تشمل

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

شار شارع []="=";

شار * بتر = شارع;

برينتف ("Строка: ٪ ق

"،بتر);

العودة 0;

}

Пример 7:

# تشمل

# تحديد الحجم 3

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

مصفوفة كثافة العمليات [] [حجم] = {

{1, 2, 3},

{4, 5, 6},

{7, 8, 9}

};

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

برينتف ("Элементы матрицы:

");

ل (إنت أنا = 0 ؛ أنا < الحجم ؛ أنا i) {

ل (الباحث ي = 0 ؛ ي < الحجم; j++) {

printf("%d ", *(ptr + i * SIZE + j));

}

printf("

");

}

return 0;

}

Пример 8:

#include

int main() {

int* ptr = NULL;

if (ptr == NULL) {

printf("Указатель не указывает ни на какой объект

");

} else {

printf("Указатель указывает на объект

");

}

return 0;

}

Вопрос-ответ