Указатели. Вычитание указателей - C#
Формулировка задачи:
Сам читаю книгу Шилдта.
Глава с указателями, написано - "Если складывать указатели нельзя, то разрешается вычитать один указатель из другого, при условии, что оба указателя имеют один и тот же соотносимый тип. Результатом такой операции окажется количество элементов соотносимого типа, которые разделяют оба указателя".
Конкретного примера в книге нету, на MSDN вычитал, что результатом такого вычитания всегда тип long.
В результате у меня получается 4294967295, а я ожидаю 6.
Ткните носом, что я делаю не так. Спасибо.
int one = 4; int two = 10; int* p1 = &one; int* p2 = &two; long* dif; dif = (long*)(p2 - p1); Console.WriteLine((long)dif); Console.WriteLine();
Решение задачи: «Указатели. Вычитание указателей»
textual
Листинг программы
//объявляем переменную присваиваем ЗНАЧЕНИЕ = 10 //адрес равен 0 + смещение //(там будет определенное значение, которое возможно будет разным, назавем это значение смещением) int one = 10; //объявляем переменную присваиваем ЗНАЧЕНИЕ = 20 //адрес ее будет равен 4 + смещение (размер int = 4байта) int two = 20; //объявляем переменную присваиваем ЗНАЧЕНИЕ = 30 //адрес будет 8 + смещение. int three = 30; int* ptrOne = &one; //ptrOne будет равен адресу, то есть 0 + смещение int* ptrThree = &three;//ptrTwo будет равен адресу, то есть 8 + смещение //при вычитании наше смещение сократится, и останется 8 //т.к. размер переменной равен 4, то ответ будет 2 (8 / 4 = 2) long delta = ptrThree - ptrOne; Console.WriteLine(delta);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д