معنى - pointers in c++ شرح



زيادة مؤشر الفراغ من بايت واحد؟ من قبل اثنين؟ (3)

لا يمكن إجراء عمليات حسابية على مؤشر void .

لا يعرف المحول البرمجي حجم العنصر (العناصر) الذي يشير إليه مؤشر void . يمكنك إرسال المؤشر إلى ( char * ) للقيام بذلك.

في gcc يوجد ملحق الذي يعالج حجم void 1 . لذلك يمكن للمرء استخدام علمائي على void* لإضافة إزاحة في بايت ، ولكن استخدامه سيؤدي إلى شفرة غير محمولة.

https://code.i-harness.com

لدي مؤشر باطل يسمى ptr . أرغب في زيادة هذه القيمة بعدد من وحدات البايت. هل هناك طريقة للقيام بذلك؟

يرجى ملاحظة أنني أريد القيام بهذا في نفس المكان بدون إنشاء المزيد من المتغيرات.

هل يمكنني فعل شيء مثل ptr = (void *)(++((char *) ptr)); ؟


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

ومع ذلك ، يمكنك ، على سبيل المثال ، إرسال المؤشر إلى char* ، والقيام بالحساب على هذا المؤشر ، ثم تحويله مرة أخرى إلى void* :

void* p = /* get a pointer somehow */;

// In C++:
p = static_cast<char*>(p) + 1;

// In C:
p = (char*)p + 1;

يمكنك ان تفعل:

++(*((char **)(&ptr)));




pointers