Как указывает Джоэл в подкасте № 34 «Переполнение стека» на языке программирования C (он же K & R), в C упоминается это свойство массивов:a[5] == 5[a] Джоэл говорит, что это из-за арифметики указателей, но я все еще не понимаю. Почемуa[5] == 5[a]...
Как указывает Джоэл в подкасте № 34 «Переполнение стека» на языке программирования C (он же K & R), в C упоминается это свойство массивов:a[5] == 5[a] Джоэл говорит, что это из-за арифметики указателей, но я все еще не понимаю. Почемуa[5] == 5[a]...
Когда указатель к определенному типу (скажем int, char, float, ..) увеличивается, его значение увеличивается на размер этого типа данных. Если voidуказатель, который указывает на данные размера x, увеличивается, как он может указывать xвперед байты? Как компилятор знает, как добавить xзначение...
Проходя через несколько вопросов на собеседовании с C, я нашел вопрос о том, как найти размер массива в C без использования оператора sizeof, со следующим решением. Это работает, но я не могу понять, почему. #include <stdio.h> int main() { int a[] = {100, 200, 300, 400, 500}; int size = 0;...
Я знаю, что арифметика указателей запрещена для нулевых указателей. Но представьте, у меня есть что-то вроде этого: class MyArray { int *arrayBegin; // pointer to the first array item, NULL for an empty array unsigned arraySize; // size of the array, zero for an empty array public: int *begin()...