في زيادة 4 بايت ، بدلاً من الزيادة المتوقعة 1 بايت. لقد حير هذا التناقض العديد من المبرمجين ، مما أدى إلى أسئلة مثل:
س: لماذا يزيد مؤشر int "بمقدار 4 بدلاً من 1؟ترتبط زيادة مؤشر int بمقدار 4 بايت بحجم نوع البيانات الذي يشير إليه. يشغل كل متغير int 4 بايت من الذاكرة ، وبالتالي فإن زيادة مؤشر int ينقل المؤشر إلى int التالي ، والذي يقع على بعد 4 بايت في الذاكرة. &&&] int a = 1 ، *ptr ؛ ptr = & a ؛ printf ("٪ p \ n" ، ptr) ؛ PTR printf ("٪ p \ n" ، ptr) ؛
الإخراج المتوقع:
0xbf8d63b8 0xBf8d63b9 الإخراج الفعلي:
0xBF8D63BC الفرق في الإخراج يرجع إلى زيادة 4 بايت. بينما يظهر الإخراج المتوقع زيادة بايت واحد ، يوضح الإخراج الفعلي القفزة ذات 4 بايت ، مما يؤدي إلى قفزة ملحوظة في عناوين الذاكرة.
int a = 1, *ptr; ptr = &a; printf("%p\n", ptr); ptr ; printf("%p\n", ptr);
س: كيفية زيارة البايت 4 واحد؟ بعد ذلك ، يمكنك زيادة مؤشر Char للتنقل عبر بايت int.
مثال:0xBF8D63B8 0xBF8D63B9int* p = & i ؛ char* c = (char*) p ؛ char x = c [1] ؛ // بايت واحد في int
في هذا المثال ، يتم الوصول إلى البايت الأول للمتغير int i باستخدام تعبير c [1]. يمكنك زيادة مؤشر C للوصول إلى البايتات اللاحقة داخل int. من خلال فهم الأسباب الكامنة وراء زيادة 4 بايت للمؤشرات Int ، يمكنك منع المزالق الشائعة وكتابة رمز أكثر كفاءة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3