int* PtrA; // assigned memory address 100
int a = 1; // assigned memory address 600
What is the memory address of ptrA + 2?
Вопрос неоднозначный.
Если вопрос: «Что такое (адрес памяти ptrA) + 2?», То вы сказали, что ptrA
находится по адресу памяти 100 (игнорируя PtrA! = PtrA) и добавляя 2 к указателю в C и C++ увеличивает значения в кратных размерах заостренного типа, поэтому, если int
- 32 бита, тогда конечный результат равен 100 + 2 * 4 = 108.
Если вопрос: «Каков адрес памяти (ptrA + 2)? ", Что означает результат добавления значения в переменную ptrA и 2, тогда это не определено, поскольку не показана инициализация ptrA
, и это неопределенное поведение, чтобы попытаться прочитать из неинициализированной памяти.
Ваши ожидания и предполагаемый ответ предложить предполагаемый код был ...
ptrA = &a;
... когда-нибудь до того, как ptrA + 2
должна была быть оценена. Если это так, то ответ будет 600 + 2 * sizeof(int)
, который, скорее всего, будет 608.
Если это, как был сформулирован тест вопрос, тест отстой. –
Я очень сомневаюсь, что это то, что на самом деле было задано на тест ... по крайней мере там было бы «PtrA = & a». –
@Jim: если вопрос не был умышленно проверен, что такая ошибка была замечена учеником .... –