Последний элемент массива и include

General Injection issues

Moderators: Murderator+, Murderator

Post Reply
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Последний элемент массива и include

Post by Beyonder »

Если массив [20] то последний элемент 19? Или 20?

И еще, на форуме уже поднималась такая тема, но толком никто на нее не ответил.
Будут ли в инже инклуды одного скрипта в другой?
А то есть множество нужных во всех скриптах функций, и если бы можно было вынести их все в отдельный файл, то было-бы очень удобно просматривать и понимать скрипты.
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Re: Последний элемент массива и include

Post by Sfagnum »

Beyonder wrote:Если массив [20] то последний элемент 19? Или 20?
19

Beyonder wrote:И еще, на форуме уже поднималась такая тема, но толком никто на нее не ответил.
Yoko отписывался на данную тему. поищи.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

По документации - 19. Фактически - 20, но может в любой момент взглючить, что закончится анхандлед еррор ин парсер.
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

делать статический массив точно того размера что потребуется, такаяже идиотская затея, как брать точное количество пластиковых стаканчиков на шашлыки
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Yoko wrote:делать статический массив точно того размера что потребуется, такаяже идиотская затея, как брать точное количество пластиковых стаканчиков на шашлыки

Ну лучше уж взять точное количество стаканчиков, чем вобще без них :wink:
Last edited by Destruction on 2005-05-04 01:38:10, edited 1 time in total.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
I'm
Expert!
Posts: 1396
Joined: 2004-10-15 22:38:04
Location: Moscow City.
Contact:

Post by I'm »

Лучше брать с запасом :lol:
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

I'm wrote:Лучше брать с запасом :lol:

А мне вот интересно - скажем пишем ходилку, отсканировал путь, нашел препятствия, чтобы их обойти - надо в массив написать дополнитльные направления, сколько их будет - неизвестно, какого же тада размера брать массив?!
Last edited by Destruction on 2005-05-04 01:36:35, edited 1 time in total.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

Внушительного. :lol:
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

AGRS wrote:Внушительного. :lol:

Пасиб конечно, но я сделал по другому, и теперь надеюсь, что длинна строки ничем не ограничена :roll:
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

Ну и правильно. Идея с массивом для таких задач не подходит. :)
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Post by Beyonder »

Еще вопрос. Как реализованы строки в инжекте?
Вопрос чисто для интереса.
Варианты:
а) Как String
b) Как char *
c) Как Vector ?

А насчет точного числа элементов, то иногда бывает надо. Например если я уверен что макс размер не превысит 200, зачем мне брать 201?
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Beyonder wrote:Еще вопрос. Как реализованы строки в инжекте?
Вопрос чисто для интереса.
Варианты:
а) Как String
b) Как char *
c) Как Vector ?

А насчет точного числа элементов, то иногда бывает надо. Например если я уверен что макс размер не превысит 200, зачем мне брать 201?

вероятно а.

А чтобы не сглючило.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

Beyonder wrote:Еще вопрос. Как реализованы строки в инжекте?
Вопрос чисто для интереса.
Варианты:
а) Как String
b) Как char *
c) Как Vector ?
аналогично паскалевскому string, т.е. как масив of char
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Post by Beyonder »

Стоп. Чего-то я не понял.
String тип С++ это не массив, это тип похожий на VECTOR (может в основе он и есть)
А массив символов это второй вариант char * который не динамический.
В общем главный интересующий вопрос это как занимаеться им память?
Например:
var Line='Testing big line' #16 символов всего. Память резервируеться на 16 символов или сразу с резервом например на 255?
Line[16]='!' # Запись нового символа в конец. Памяти выделиться еще на один символ или сначала используеться резерв?
Есть ли предел длины строк?
Fall0ut
Expert!
Posts: 46
Joined: 2005-01-19 11:58:09

Post by Fall0ut »

>>String тип С++ это не массив, это тип похожий на VECTOR (может в основе он и есть)
1. Масив... вектор.... если ты имеешь ввиду шаблон вектор из СТЛ это одно а если как определние то одномерный масив он и есть вектор....

>>А массив символов это второй вариант char * который не динамический.
2. Бред вообще какой то... масив символов и char * это разные вещи...
char * это указательн а память с типом char ... а масив символов это и есть та память минимальная единица которой равна ... char +) а какая она динамически выделенная или нет... это уже второй вопрос ...


3.Опять таки есть исходный код Йоко инжекта который можно посмотреть на официальной страничке... там есть файлик mystring.c собсвенно там есть класс TString ... и собсвенно говря можно погледять как всё устроено....

Code: Select all

TString::TString(const char * s)
{
    Buff=strdup(s);
    StringLen = strlen(s);
    BuffSize=StringLen+1;
}


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



>>Yoko wrote:
>>делать статический массив точно того размера что потребуется, >>такаяже идиотская затея, как брать точное количество пластиковых >>стаканчиков на шашлыки

Ммм если я определяю масив в 20 лэлементов то программа должна зарезервировать столько памяти... если я хочу определить динамическое кол-во элементов чтоб можно было добавлять та или удалять и тд итп.. ну тогда может использовать LinkedList ? или там Stack ? класс... ну это уже совсем другая история +)
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Post by Beyonder »

Вообще-то любой массив это указатель.
Вариант 1:
int Array[20];
((*Array) == Array[0]); // Тоесть сам массив являеться указателем на первый его элемент.

Вариант 2:
int *Array;
Array=new int[20];
((*Array) == Array[0]); // Здесь же указатель являеться массивом и указывает на первый элемент так-же как и в предыдущем случае.

Разница между этими примерами лишь в том, что в первом варианте массив есть массив и ничто другое, а во втором, это указатель из которого по желанию можно сделать ничем не отличающийся от первого случая массив.

Причем во множестве программ как на меня удобнее использовать именно char * из-за его динамичности.

А насчет кода, то честно говоря лень было искать и понимать что там написано :).
Fall0ut
Expert!
Posts: 46
Joined: 2005-01-19 11:58:09

Post by Fall0ut »

>> использовать именно char * из-за его динамичности.
а ты буквально недавно говрил.... цитирую "А массив символов это второй вариант char * который не динамический."

второе не надо путать понятия языка... с тем как ты решил это обозвать....

Если ты гворишь МАСИВ это область памяти ... если ты гворишь указатель то это переменная содержащая адрес некой области памяти с типом или без него.... вот если ты говришь ИМЯ МАСИВА да имя масива представляет собой типизированый адрес на область памяти занятую этим масивом.... а по поводу...

char bla[0] = '0';

и

char *bla = malloc(100);
bla[0] = '0';

да конечно и там и там в первый элемент размером в один байт будет равен '0' ... но в компиляторе реализация адресациии в данных случиях будет нмного другая... но это к делу мало относится просто когда я гворю МАСИВ я и имею ввиду понятие МАСИВ ... примерно тоже самое когда ты гворил про ВЕКТОР и МАСИВ.... либо больше конкретики.. либо обзывать надо всё своими именами...
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Post by Beyonder »

Просто в первом случае я имел ввиду немного не ту динамичность. Просто не нашел другого слова. Я имелл ввиду что такой массив не удлиняем, а в общем я просто запутался в выражениях :).
Post Reply