Вопросы по теме 'pointer-arithmetic'

Доступ к элементу за концом массива в C
Я читал книгу K & R по C и обнаружил, что арифметика указателей в C позволяет получить доступ к одному элементу за концом массива. Я знаю, что C позволяет делать с памятью почти все, но я просто не понимаю, в чем цель этой особенности?
12022 просмотров
schedule 04.10.2022

Порядок операций для разыменования и ссылки на скобки в C
Если я сделаю *ptr[x] , это будет эквивалентно *(ptr[x]) или (*ptr)[x] ?
12917 просмотров
schedule 09.02.2023

Новый метод IntPtr.Add - я упустил смысл int?
Начиная с FW 4.0, IntPtr структура имеет структуру Add : public static IntPtr Add( IntPtr pointer, int offset ) И это здорово, так как предполагается, что он ответит на все те вопросы по IntPtr математике, которые у нас были...
1466 просмотров
schedule 21.08.2022

Арифметика указателей для структур
Учитывая определение структуры, которое содержит одну двойную и три переменные типа int (всего 4 переменные), если p является указателем на эту структуру со значением 0x1000, какое значение имеет p++? Это не проблема с домашним заданием, так что не...
26682 просмотров
schedule 05.06.2023

Арифметика указателя через границы подобъекта
Имеет ли следующий код (который выполняет арифметические операции с указателями через границы подобъектов) четко определенное поведение для типов T , для которых он компилируется (что в C++11, не обязательно должен быть POD ) или любым его...
974 просмотров

Арифметика указателя на необработанных данных
Так что мне нужно обработать некоторые структурные данные, которые мне пришлось сжать странным образом для MPI_Send/Recv. Невозможно удобно привести его к указателю на известный тип, с которым я хочу работать, а затем проиндексировать его...
695 просмотров

Странное поведение при использовании указателей
У меня есть файл с некоторыми двоичными данными следующим образом. aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 36 65 fb 5f 1e 92 d8 1b 55 f7 fb 5f 1e 92 d8 1b Я хочу извлечь значения 55 36 65 fb 5f 1e ....
64 просмотров
schedule 01.07.2022

Адрес указателя C изменяется без присваивания
Я работаю над заданием Uni здесь, и я столкнулся с проблемой. Я пытаюсь сохранить ввод строки в точке внутри структуры, используя цикл for. Позже я намерен использовать указатель на место, где были сохранены данные, для извлечения строки. Теперь...
1900 просмотров
schedule 16.01.2023

Какие значения фиктивных указателей допустимы
Это то, что давно у меня на уме. Время от времени я вижу, как люди используют 1 или -1 в качестве фиктивного значения для указателя. Чтобы сохранить потребность в другой переменной. Можно ли использовать такие указатели? Я полагаю, что -1 в...
1921 просмотров
schedule 24.05.2023

Арифметика указателей в Go
Учитывая, что вы можете (не могу придумать отличный способ выразить это, но) манипулировать указателями в Go, возможно ли выполнять арифметические операции с указателями, как в C, скажем, для перебора массива? Я знаю, что петли в наши дни отлично...
13477 просмотров
schedule 23.09.2023

C Арифметика дробей
У меня большие трудности со следующим, что мне нужно сделать для присваивания: a. Объявить структуру данных, содержащую рациональное число. b. Напишите f'xns, которые будут +, -, *, / рациональными числами. Все f'xns должны передавать 3...
6397 просмотров

Почему адрес памяти, содержащийся в указателе +1, отличается от адреса значения, на которое указывает +1
Указатель хранит адрес памяти значения, на которое указывает указатель, поэтому адрес памяти, содержащийся в указателе, совпадает с адресом памяти значения. Таким образом, добавление 1 к обоим этим адресам памяти должно давать одинаковый результат,...
267 просмотров
schedule 09.09.2023

Использование только арифметики указателя для обхода загруженной DLL/EXE для формата файла PE
Моей конечной целью было получить список имен DLL из статической таблицы данных импорта. Я подумал, что могу сделать что-то вроде: auto data_dirs = p_loaded_image->FileHeader->OptionalHeader.DataDirectory; А затем каким-то образом...
258 просмотров

Доступ к данным с помощью указателя (переинтерпретация приведения) и . или -› оператор
Какова основная цель доступа к данным через адрес указателя с использованием reinterpret_cast. Это быстрее, если да, то как именно? Ниже приведена программа, которая печатает те же данные структуры через файлы . оператор и через указатель...
106 просмотров

(2 - 4 = -1), когда значение int присваивается указателю в C?
Я не могу понять, почему в этой программе 2 - 4 дает -1, она присваивает значения int указателям, а не адресам, я знаю, но пока я ее компилировал, компилятор выдал несколько предупреждений, но скомпилировал программу, и она выполнилась, но......
209 просмотров
schedule 27.06.2022

Если я хочу безопасно кодировать на Rust, должен ли я кодировать без использования арифметики указателей?
Я читал, что арифметика указателей в Rust может выполняться через функцию pointer.offset() , но ее всегда нужно реализовывать в unsafe code : fn main() { let buf: [u32; 5] = [1, 2, 3, 4, 5]; let mut ptr1: *const u32 = buf.as_ptr();...
334 просмотров
schedule 25.04.2023

Арифметика указателя в memcpy имеет странный результат
Я возвращаюсь к программированию на C через несколько лет, поэтому я думаю, что я немного заржавел, но я вижу какое-то странное поведение в своем коде. У меня есть следующее: memcpy(dest + (start_position * sizeof(MyEnum)), source, source_size...
368 просмотров
schedule 24.08.2022

Что означает возможно-гипотетический в правилах арифметики указателей?
В спецификации стандарта для арифметики указателей ( [expr.add]/4.2 ) мы имеем: В противном случае, если P указывает на элемент массива i объекта массива x с элементами n ([dcl.array]), выражения P + J и J + P (где J имеет...
119 просмотров

Это неопределенное поведение или нет?
Что будет на выходе следующей программы на C? main() { char g[] = "geeksforgeeks"; printf("%s", g + g[6] - g[8]); } geeks rgeeks geeksforgeeks forgeeks Ответ 1: geeks . Но у меня был спор с...
133 просмотров

Арифметика указателя внутри структуры
Внутри массива разрешена арифметика указателя (пока результат не выходит за границы, где конечная граница находится за концом массива). // Legit int m[3] = {0, 1, 2}; int const *p = m; std::cout << *p << *(p + 1) << *(p + 2)...
72 просмотров
schedule 21.01.2023