Дож писал(а):И нет: передать динамический массив не то же самое, что передать открытый массив.
Меня интересует только то, что видно снаружи. Во внутренности я не вдаюсь. А снаружи это выглядит одинаково.
Модератор: Модераторы
Дож писал(а):И нет: передать динамический массив не то же самое, что передать открытый массив.
Vadim, вы в предыдущем же сообщении написали, что динамический массив никак не передать в процедуру,
А есть гарантия, что все элементы опенэрррэя при доступе в обход паскалевского менеджера памяти лежат в непрерывной области памяти -то есть пригодны для итерации указателя средствами "С"?
А есть ли реальная необходимость, не доверяя компилятору, задавать прямо в коде выравнивание для разных участков программы?
И такой ещё вопрос: если в сишном коде явно не указана "pragma pack", выравнивание ведь тоже производится?
struct S {
char first;
char a[2];
int b;
};
An array type describes a contiguously allocated nonempty set of objects with a particular member object type, called the element type.
По какому принципу? А тип struct?
n array type describes a contiguously allocated nonempty set of objects with a particular member object type, called the element type.
Аллокйэтид или аксессед ?
А вот доступ к элементам массива по смешению указателя от стартового элемента - это скорее лайф-хак, работающий пока массив не заредизайнили
A postfix expression followed by an expression in square brackets[] is a subscripted designation of an element of an array object. The definition of the subscript operato r[] is that E1[E2] is identical to (*((E1)+(E2))). Because of the conversion rules that apply to the binary+operator, if E1 is an array object (equivalently, a pointer to the initial element of an array object) and E2 is an integer, E1[E2] designates the E2-th element of E1(counting from zero).
Массивов не может быть в невыделенной памяти.
а описанное в стандарте поведение (арифметика указателя приравнена к арифметике обращения к массиву)
Он может как в джаве собираться из выделенных кусоов
Уже для строковых (при строках разной длины) массивов не работает.
Какое утверждение стандарта было нарушено?
Стандарт-то тут причём? Можете процитировать утверждение стандарта, которое каким-то образом было нарушено "кодом", который мне не удалось написать?
Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4