LINUX.ORG.RU

максимальное число элементов в массиве в С?

 , , openrange


1

3

эт что же массив(еденичных элементов) по определению меньше всего адресного пространства ??

т.е если вся память адреса 0...2^64-1 то массив элементов единичного размера начинающийся с 0 адресса не может в себе содержать элемент максимального значения типа индекса

( ща когда 64 бита это не очень актуально но для 32 и тем более 16 оказывается массив(байтов) обязан быть меньше сегмента байтов.)

★★☆
Ответ на: комментарий от anonymous

О чем я и говорю: нельзя утверждать что ptrdiff_t не int.

можно и нужно. Программу нужно писать так, как будто int никакого отношения к ptrdiff_t НЕ имеет. Т.е. может быть как больше, так и меньше размером. И _любое_ преобразование должно быть запрещено, т.к. может порушить указатель. Разрешено лишь сложение/вычитание int и ptrdiff_t(или указателя), но для этого требуется _доказать_, что получившийся ptrdiff_t НИКОГДА не выйдет за пределы массива. Компилятор этим заниматься НЕ будет. Он _молча_ соберёт быдлокод, который успешно пройдёт все тесты, и рухнет в продакшене.

drBatty ★★
()
Ответ на: комментарий от anonymous

Если ты вводишь трехмерный индекс, зачем пытаешься его перевести в одно число?

IRL мне приходилось работать с 256и мерным индексом. Не кажется-ли тебе, что 256и мерный вектор — уже перебор? А 3х мерный можно представить.

drBatty ★★
()
Ответ на: комментарий от drBatty

256и мерный вектор — уже перебор

Ну, если вспомнить о том, что в некоторых областях математики изучаются линейные бесконечномерные пространства, т.е. в них можно построить линейно независимую систему с любым количеством векторов, то 256-ти мерный вектор ни разу не перебор.

anonymous
()
Ответ на: комментарий от drBatty

Индекс — путь

У тебя в голове каша из аналогий. Что еще за путь?

anonymous
()
Ответ на: комментарий от drBatty

Т.е. может быть как больше, так и меньше размером

А также, их размеры могут совпадать. Поэтому говорить, что int и ptrdiff_t всегда разные типы нельзя. Нужно говорить, что они не всегда одинаковы.

anonymous
()
Ответ на: комментарий от anonymous

то 256-ти мерный вектор ни разу не перебор.

не перебор. Если это 0x2ee505f9bfd700907c53f29143cfaecbd53eeeaa5c8cf4c292af7b80d93df6e9, а если как ты(?) предлагал записывать — ну нафиг. Речь шла о том, что индекс в общем случае не ложится на число элементов и их порядковый номер.

ЗЫЖ 256и значное число можно рассматривать как вектор перемещения по единичному 256и мерному гиперкубу, от нулевой вершины к целевой. Также можно определить и расстояние между двумя вершинами. Несложно реализовать и быстрый поиск нужной вершины в слабосвязанной сети таких векторов. Это часто очень полезно IRL.

drBatty ★★
()
Ответ на: комментарий от anonymous

Про инициализацию речи не было.

было. Ибо КОЛИЧЕСТВО элементов указывается _только_ в инициализации. Например

int a[5];

После этого писать a[5] уже нельзя, ибо 5 тут имеет совсем другой смысл.

drBatty ★★
()
Ответ на: комментарий от anonymous

Это не инициализация.

если глобальное, то инициализация. А локально допиши ={0,0,0,0,0}; раз так хочется чем-то инициализировать. Хотя строго говоря, это и локально инициализация. Память выделяется, просто туда ничего не пишется. Но вот указатель стека перемещается на 5 int'ов.

drBatty ★★
()
Ответ на: комментарий от anonymous

Где здесь кто-либо предлагал записывать вектора в какой-либо конкретной форме?

максимальное число элементов в массиве в С? (комментарий)

оно может и правильно считать сумму 256и модулей, но мне XOR ближе и родней.

drBatty ★★
()
Ответ на: комментарий от drBatty

ЗЫЖ 256и значное число можно рассматривать как вектор перемещения по единичному 256и мерному гиперкубу, от нулевой вершины к целевой. Также можно определить и расстояние между двумя вершинами. Несложно реализовать и быстрый поиск нужной вершины в слабосвязанной сети таких векторов. Это часто очень полезно IRL.

Это тут при чем?

Также можно определить и расстояние между двумя вершинами.

Как также? По разрядам, как по координатам вектора? Зачем?

anonymous
()
Ответ на: комментарий от drBatty

Ну хорошо, не сумма модулей разностей, а сумма битов исключающего или. Какое отношение вычисление расстояния имеет к представлению вектора?

anonymous
()
Ответ на: комментарий от anonymous

Как также? По разрядам, как по координатам вектора? Зачем?

ну говорю же: для того, что-бы как можно быстрее найти путь к нужному вектору.

Проблема в том, что коллекция вовсе не должна быть связана, и не должна в пределе быть обязательно обращена в счётное множество, как это происходит в пределе с обычным массивом/списком. Т.е. операция итератора operator++() вовсе не обязана быть сложением с 1. Потому индекс вообще не имеет никакого отношения к числу эл-тов.

drBatty ★★
()
Ответ на: комментарий от anonymous

Какое отношение вычисление расстояния имеет к представлению вектора?

вектор перемещения вовсе не обязательно должен быть последовательностью натуральных чисел.

drBatty ★★
()
Ответ на: комментарий от anonymous

Еще раз. Это не инициализация — это декларация.

в сишечке это именно инициализация. Память инициализируется, и после этого она готова что-то хранить. Присваивать какие-то начальные значения при инициализации не обязательно. Т.е. это НЕ только декларация(для C/C++. Для твоего любимого php — яхз). Malloc(2) в последние десятилетия тоже только инициализирует виртуальную память, но её даже не выделяет. Просто какой-то кусок адресного пространства процесса помечается как «занятый», даже несмотря на то, что там нет никакой физической памяти. Также инициализируются локальные массивы: передвигается указатель стека, дабы никто больше эту память не использовал. Сама память при этом не пишется и не читается.

drBatty ★★
()
Ответ на: комментарий от anonymous

Откуда у тебя порядковые номера всплыли?

ну вот в сишечном массиве можно эл-ты пронумеровать. Нумеруем мы IRL с первого эл-та, и если у нас 100 эл-тов, то последний имеет №100. Всегда ваш, К.О.

А вот индекс — совершенно _другая_ ерунда, и я не вижу ничего странного, что индекс эл-та №100 равен 99. Если-бы он был равен 0xAF520D я-бы тоже не удивился(хотя в сишечке так напрямую не получается). Индекс, кстати будет равен 100, если в качестве базы заюзать &(a[-1]) === a-1.

drBatty ★★
()
Ответ на: комментарий от anonymous

Память выделяется, просто туда ничего не пишется

И какая де это тогда инициализация?

обычная. Когда не пишется.

А кто сказал, что надо что-то писать в память для инициализации?

drBatty ★★
()
Ответ на: комментарий от drBatty

вообще говоря есть в сишечке и декларации. Например extern только декларирует глобальную переменную. Параметры функций - тоже. Инициализируются эти переменные где-то в других местах.

drBatty ★★
()
Ответ на: комментарий от drBatty

Ты говоришь про какую-то свою задачу, не давая ее формулировки. Что за путь к вектору? Что ты подразумеваешь под связностью коллекции?

anonymous
()
Ответ на: комментарий от drBatty

… как это происходит в пределе с обычным массивом/списком. Т.е. операция итератора operator++() вовсе не обязана быть сложением с 1.

До этого тутговорили про C и массивы. А о чем говоришь ты?

anonymous
()
Ответ на: комментарий от drBatty

О каком пространстве говорим?

anonymous
()
Ответ на: комментарий от drBatty

в сишечке это именно инициализация

Сходи почитай стандарт что-ли для разнообразия.

Память инициализируется, и после этого она готова что-то хранить

Так вот что у тебя за инициализация. Обычно под иницилизацией понимают инициализацию объекта (переменной).

anonymous
()
Ответ на: комментарий от drBatty

ну вот в сишечном массиве можно эл-ты пронумеровать. Нумеруем мы IRL с первого эл-та, и если у нас 100 эл-тов, то последний имеет №100. Всегда ваш, К.О.

Зачем ты начал говорить про порядковые номера? До тебя о них не было и речи.

anonymous
()
Ответ на: комментарий от drBatty

ээээ

ибо эвм цифровая машинка

мап «число -> значение некоего типа» настолько легче на реальной машине что особым образом выделен в виде массивов

ну и прошитость всех программеров(читай математиков и физиков) ещё с детства координатным подходом Декарта ( который алгебраизировал геометрию).

а так забавно как key-value db ( db кучи ассоциаций) всегда удобное для разнородных VS реляционые db (вагоны однородной статистики для самообслуживания того или иного голема)

наратизировалось в реальности в расцвет реляционых над сетевыми , а затем невзлёт обьектных над реляционными и противостояние «устаревших дедовских» реляционых VS хипстерсих key-value

qulinxao ★★☆
() автор топика
Ответ на: комментарий от drBatty

Ты перестанешь разговаривать сам с собой и начнешь читать то, что тебе пишут или нет?

anonymous
()
Ответ на: комментарий от drBatty

Я уже понял, что у тебя своя, особая инициализация. Ты инициализируешь память, а не то что в ней хранится.

anonymous
()
Ответ на: комментарий от qulinxao

и кстати

«одновременность» при обучении в заборостроительных религии РеляционыеБазы ( и как они победили сетевые которые победили иерархические)

и

религии ООП ( всюду есть иерархия(или ещё клиничнее иерархия с великим первоКласом(и первоОбьектом сыном его)) типов )

помогает понять насколько заборостроительные сотворенны как репродукторы-ретрансляторы целлевых указаний , а не научные учереждения по удовлетворению любопытства

qulinxao ★★☆
() автор топика
Ответ на: комментарий от anonymous

Ты говоришь про какую-то свою задачу, не давая ее формулировки. Что за путь к вектору? Что ты подразумеваешь под связностью коллекции?

что угодно. Индекс и число элементов — принципиально разные вещи. Даже если эл-ты пронумеровать, их №№ не будет иметь к индексу никакого отношения.

drBatty ★★
()
Ответ на: комментарий от qulinxao

ибо эвм цифровая машинка

она уже давно используется не только, и не столько для того, что-бы считать. Рамки применения вышли за пределы расчётов ещё 100 лет назад.

drBatty ★★
()
Ответ на: комментарий от anonymous

Я уже понял, что у тебя своя, особая инициализация. Ты инициализируешь память, а не то что в ней хранится.

именно так. У нас в сишечке своя, особая инициализация. Я не знаю, хорошо это или плохо.

drBatty ★★
()
Ответ на: комментарий от drBatty

«мой поинт» не про то что всё(таково определение всего ) можно занумеровать , а про то что индекс по номеру «первичней» чем индекс по имени (буквецифровой последовательности упорядонной в лексико , а не в числовой интерпритации - при чём при битовой интерпритации целого индекса заведомой ширины эти порядки совпадают)

компы и появились в стремлении научится считать расуждения.

qulinxao ★★☆
() автор топика
Ответ на: комментарий от drBatty

что угодно

void

Хватит разбрасываться квантором всеобщности. Ты уже показал, что не умеешь им пользоваться.

anonymous
()
Ответ на: комментарий от qulinxao

а про то что индекс по номеру «первичней» чем индекс по имени

«индекс по номеру» это самый тривиальный и примитивный вариант индекса. Это ничего не значит, IRL нужны другие индексы, с совершенно другими свойствами.

компы и появились в стремлении научится считать расуждения.

когда мы думаем, наш моск делает какие угодно действия, никому не понятно — какие именно. Единственное, что очевидно: мы НЕ СЧИТАЕМ. Потому вычисления — тупик. Числа — это самый примитивный способ представления информации, хотя-бы потому, что они одномерные by design. Вот только наш мир намного сложнее, и не описывается даже сложными формулами. А уж тем более какими-то числами.

drBatty ★★
()
Ответ на: комментарий от drBatty

У нас в сишечке своя, особая инициализация

Так у тебя еще и своя особая сишечка. Ну так проходи мимо мы про нее не разговариваем.

anonymous
()
Ответ на: комментарий от drBatty

извини , но ты не читаеш(в смысле читаеш но не придаёш значение прямо сообщаемому) , что тебе пишут , а реагируеш на свои асоциации от прочитаного.

рекомендую к просмотру лекцию Степанова( уверен что это не его первонаблюдение) о том что появление компов и движуха с аксиоматизацией математики имени Б. Рассела и его Уайтхеда есть следствие и причина.

qulinxao ★★☆
() автор топика
Ответ на: комментарий от drBatty

Говна в прямом эфире? Молодец. Следующий!

anonymous
()
Ответ на: комментарий от anonymous

Я не справшиваю чем путь представлен, я спрашиваю «что это такое?»

тебе нужны примеры? См. выше. Или что тебе конкретно непонятно?

Вы спорили о том, почему в массиве a[100500] нет элемента с индексом 100500? Ну я и отвечаю: его и не должно быть, ибо индекс не связан с количеством эл-тов. В сишечке самый примитивный массив, и потому там связь есть. В этом конкретном частном случае индекс последнего эл-та численно равен числу эл-тов -1. В других случаях индекс посл. эл-та может быть каким угодно, да и последнего эл-та может не быть.

drBatty ★★
()
Ответ на: комментарий от qulinxao

извини , но ты не читаеш(в смысле читаеш но не придаёш значение прямо сообщаемому) , что тебе пишут , а реагируеш на свои асоциации от прочитаного.

ты так хитро пишешь, что осмыслить твой текст практически невозможно.

drBatty ★★
()
Ответ на: комментарий от anonymous

void Полноправный незавершенный тип в C. Причем он не единственный незавершенный.

меня мало волнует это определение. Ибо никаких объектов типа void не существует. «Объект void» это /0. Вот в SQL есть такие «объекты», это NULL оттуда. А в сишечке — нету. Извини. И индексов типа void тоже ессно нет, как и любых объектов такого типа.

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.