Результаты поиска по запросу "pointer-arithmetic"

2 ответа

@ Олив: Нет, я не говорил, что это неопределенное поведение. Это адрес члена массива, а арифметические правила указателя позволяют добавлять любое смещение, попадающее в тот же массив. Что определяет ваш пример.

те рассмотрим этот код: int i; int is[10]{}; unsigned char * p = reinterpret_cast<unsigned char*>(&i); //p defined to point to the object-representation of the first element of array ints unsigned char * ps = reinterpret_cast<unsigned ...

3 ответа

@Oliv Я подозреваю, что источником UB является не арифметика указателей, а преобразование массива в указатель, применяемое к массиву вне его времени жизни.

те рассмотрим этот пример кода: struct sso { union { struct { char* ptr; char size_r[8]; } large_str; char short_str[16]; }; const char* get_tag_ptr() const { return short_str+15; } };В[Basic.expr] ...

3 ответа

 указывает на последний элемент объекта массива. [...]

новании этого вопроса (странный выходной вопрос в с [https://stackoverflow.com/questions/51043235/strange-output-issue-in-c/51043333#51043333] ) был ответ (предоставлено ...

ТОП публикаций

2 ответа

 заявление. Но, похоже, мне придется больше узнать об итераторах. Они все еще очень новые и до этого неизвестного мне поста. Еще раз спасибо. Вы, вероятно, просто сэкономили мне дни на изучение томов литературы по C ++.

небольшого программирования на C я решил перейти прямо на C ++. Сначала я был рад присутствию класса string и возможности обрабатывать строки как целые единицы вместо массивов символов. Но вскоре я обнаружил, что строки в стиле C имеют ...

1 ответ

В этом случае, если базовый адрес массива равен XYZ, то arr + i = XYZ + i * sizeof (arr) / sizeof (struct large)

звестно, что если вы обращаетесь к элементу массива какarr[i] в C, что вы также можете получить доступ к элементу какi[arr]потому что они просто сводятся к*(arr + i) и сложение коммутативно. У меня вопрос, почему это работает для типов данных ...

2 ответа

Арифметика указателя в C

Рассмотрим следующий фрагмент кода: int (*p)[3]; int (*q)[3]; q = p; q++; printf("%d, %d\n", q, p); printf("%d\n", q-p);Я знаю, что арифметика указателей является интеллектуальной, а это означает, что операцияq++ достиженияq достаточно байтов, ...

5 ответов

Указатель арифметики для структур

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

4 ответа

Использование пустого указателя на массив

Я просто пытался использовать пустой указатель на целочисленный массив, я пытался посмотреть, смогу ли я напечатать массив обратно, приведя его обратно в int. Но это дает мне какое-то случайное значение. Можете ли вы сказать мне, где я иду не ...

1 ответ

Как происходит арифметика пустых указателей в GCC

int main() { int a; void *p; p = &a; printf("%ld\n",(long)p); p = p+1; printf("%ld\n",(long)p); }В этой программеp+1 просто увеличивает значение р на 1. Я знаю,void pointer arithmetic невозможно вC, такGCC делает это неявно. И если да, то ...

1 ответ

Арифметика указателей через границы подобъектов

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