CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Мастер Ломастер »

demiurg301 писал(а):... а документально?
документальнее не бывает. имя массива - это указатель объявленного типа на первый (нулевой) элемент массива.
осуществляя принудительное приведение типа [без нужды] указателя вы рискуете сильно осложнить себе жизнь: указатель и без того достаточно "острый предмет", чтобы его еще и прятать - травмы могут быть серьезными.
битва с дураками проиграна, победители торжествуют. слава победителям!
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Re: CodeVision AVR в вопросах и ответах

Сообщение demiurg301 »

Мастер Ломастер писал(а):
demiurg301 писал(а):... а документально?
документальнее не бывает. имя массива - это указатель объявленного типа на первый (нулевой) элемент массива.
осуществляя принудительное приведение типа [без нужды] указателя вы рискуете сильно осложнить себе жизнь: указатель и без того достаточно "острый предмет", чтобы его еще и прятать - травмы могут быть серьезными.


Уже, травмировал :facepalm: . А я думаю чо у меня всё переменные слетают то там то тут - то вместо нуля запишется белиберда, то наоборот не обнуляется... И гланое хаотически както, в зависимости от компиляции. Буду резать :)))
Спасибо, а то задолбался...
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

Мастер Ломастер писал(а):
demiurg301 писал(а):... а документально?
документальнее не бывает. имя массива - это указатель объявленного типа на первый (нулевой) элемент массива.
Если строго, то «идентификатор массива в большинстве случаев автоматически приводится к указателю на его первый элемент».
Но не всегда. sizeof(array_name) даст размер всего массива (или ошибку времени компиляции, если массив задан без размера -- incomplete type), а не размер указателя на его первый элемент.
Ну и первый элемент -- это первый элемент данного массива, без учета подмассивов (в С нет дву- и более-мерных массивов, в нём есть массивы массивов).
Т.е. для массива

Код: Выделить всё

int array[5][3];
имя array автоматически преобразуется к указателю на массив типа int [3], так как array[0] -- это не int, а 3-элементный массив. И &array[0] (чему более простая запись array эквивалентна в силу автоматического приведения) означает адрес этого подмассива.

Код: Выделить всё

int (*parr)[3] = array; // правильно
int *pint = array; // ошибка
В первой строке мы завели указатель на 3-элементный массив и присвоили ему адрес первого подмассива. Адрес первого int в этом огороде нужно получать вручную int *pint = &array[0][0]; либо int *pint = array[0]; -- часть индексов придется вписать.

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

С остальным (про «остроту» и «без нужды») согласен. Где-то пробегала картинка на тему соответствия языков программирования и оружия. Там и красивые водяные пистолеты были :-).
Для С там была нарисована катана. «Таки да» -- долгие вдумчивые упражнения дают возможность короткими движениями сделать много. Но если без должного навыка махать как попало, то легко и себя поранить.
Так вот указатели -- составляющая режущей кромки этой катаны.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

demiurg301 писал(а):А я думаю чо у меня всё переменные слетают то там то тут - то вместо нуля запишется белиберда, то наоборот не обнуляется... И гланое хаотически както, в зависимости от компиляции. Буду резать :)))
Ищите другие причины.
Оба приведенных варианта эквивалентны и должны правильно пониматься компилятором.
Ну разве что в первом варианте лишнее приведение типа, как если бы написать int a = (int)5;
Но вреда от него -- только замусоривание кода, которое мешает программисту, а не компилятору.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Мастер Ломастер »

avreal писал(а):Если строго, то «идентификатор массива в большинстве случаев автоматически приводится к указателю на его первый элемент» ... Т.е. для массива

Код: Выделить всё

int array[5][3];
имя array автоматически преобразуется к указателю на массив типа int [3], так как array[0] -- это не int, а 3-элементный массив. И &array[0] (чему более простая запись array эквивалентна в силу автоматического приведения) означает адрес этого подмассива.

Код: Выделить всё

int (*parr)[3] = array; // правильно
int *pint = array; // ошибка
В первой строке мы завели указатель на 3-элементный массив и присвоили ему адрес первого подмассива. Адрес первого int в этом огороде нужно получать вручную int *pint = &array[0][0]; либо int *pint = array[0]; -- часть индексов придется вписать.
дык я это и написал: для "многомерных" массивов надо просто разобраться, что именно лежит в массиве - на то указатель-имя-массива и указует. абсолютно конгруэнтно :)
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

Мастер Ломастер писал(а):указатель-имя-массива и указует

О многомерных я дописал сразу, «чтобы два раза не вставать».
Но основной темой было то, что выражение
Мастер Ломастер писал(а):имя массива - это указатель объявленного типа на первый (нулевой) элемент массива.
неправильно.

Имя массива не есть указателем (иначе sizeof неправильно отработал бы), оно просто почти всегда автоматически приводится к такому указателю, так же автоматически, как char в выражениях всегда приводится к int. А идентификатор функции -- к указателю на функицю.

Эти тонкости надо понимать, иначе рани или поздно ухо себе этой катаной оттяпаяешь.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

Да и самих массивов-то в С практически и нет. Есть только форма записи при объявлении для выделения памяти нужного размера и её инициализации да ещё синтаксический сахар в виде оператора индексации [], прячущий за собой кусочек адресной арифметики, с которой в С как раз всё хорошо.
Чтобы понять это, достаточно ответить себе на вопросы

Код: Выделить всё

int foo( int arr[4] ) // какой тип у аргумента arr
{
    ++arr;      // допустима ли эта операция и что она делает
    2[arr] = 0; // что тут происходит
    return sizeof(arr); // что вернёт функция
}

Подмога -- для AVR (avr-gcc) тело этой функции компилируется в такое

Код: Выделить всё

foo:
   movw r30,r24
   std Z+7,__zero_reg__
   std Z+6,__zero_reg__
   ldi r24,lo8(2)
   ldi r25,hi8(2)
   ret
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Мастер Ломастер »

avreal писал(а):Имя массива не есть указателем (иначе sizeof неправильно отработал бы), оно просто почти всегда автоматически приводится к такому указателю, так же автоматически, как char в выражениях всегда приводится к int.
а Керниган с Ричи пишут вот что:
в действительности компилятор преобразует ссылку на массив в указатель на начало
массива. В результате этого имя массива является указательным выражением. Отсюда вытекает несколько весьма полезных следствий. Так как имя массива является синонимом местоположения его нулевого элемента ...
и еще
Имеется одно различие между именем массива и указателем, которое необходимо иметь в виду. указатель является переменной,... Но имя массива является константой, а не переменной ... Когда имя массива передается функции, то на самом деле ей передается местоположение начала этого массива. Внутри вызванной функции такой аргумент является точно такой же переменной, как и любая другая, так что имя массива в качестве аргумента действительно является указателем, т.е. Переменной, содержащей адрес.

это для sizeof() сделано исключение при передаче ей имени массива...
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

K&R я читал давно. K&R-1, если точнее.
Со времёни появления стандарта языка ANSI С (89 год) я предпочитаю читать стандарты.
K&R-2 не читал, хотя в руках держал, когда его издали у нас первый раз.

Мастер Ломастер писал(а):и еще
... Когда имя массива передается функции, то на самом деле ей передается местоположение начала этого массива. ... Внутри вызванной функции такой аргумент является точно такой же переменной, как и любая другая, так что имя массива в качестве аргумента действительно является указателем, т.е. Переменной, содержащей адрес.
То на самом деле функции передатся не имя массива, а сделанный из него указатель.
Ну а что происходит уже внутри функции после этого и не важно.

Код: Выделить всё

 void foo(int i);
 foo(5.5f);  // Что получит функция foo ? Означает ли это, что 5.5f -- целочисленная константа?

Мастер Ломастер писал(а):это для sizeof() сделано исключение при передаче ей имени массива...
И для унарного &.
Но исключение сделано не в том, чем есть идентификатор массива (идентификатором массива и более ничем, как это ни странно), а в том, какие автоматические преобразования с ним производятся.
ANSI C SPECIFICATION (C89) писал(а):3.2.2 Other operands
3.2.2.1 Lvalues and function designators
...
Except when it is the operand of the sizeof operator or the unary & operator, or is a character string literal used to initialize an array of character type, or is a wide string literal used to initialize an array with element type compatible with wchar_t, an lvalue that has type "array of type" is converted to an expression that has type "pointer to type" that points to the initial member of the array object and is not an lvalue.

Скажите, если бы идентификатор массива уже был указателем на его первый элемент, как бы удалось «сделать исключение» для sizeof и &? Как его можно было бы отличить от других указателей?
Идентификатор массива есть значение типа «массив элементов».
Это значение в перечисленных случаях -- да, перечисленных в виде «во всех за исключением таких-то» -- тем не менее, в перечисленных случаях автоматически приводится к типу «указатель на первый элемент».
Точно так же «подмассив» array[1] массива array[5][3] (не являющийся уже идентификатором массива) есть значение типа «массив элементов» и точно так же приводится к типу «указатель на первый элемент». Именно так же, как char/short к int во всех выражениях или как float-константа к int в примере выше (но в других местах 5.5f не будет приведено к int).
Это всё автоматические приведения в определённых стандартом ситуациях, а не «оно есть».
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Мастер Ломастер »

avreal писал(а):Скажите, если бы идентификатор массива уже был указателем на его первый элемент, как бы удалось «сделать исключение» для sizeof и &? Как его можно было бы отличить от других указателей?
очень просто - по наличию [] после идентификатора, и именно по этому признаку & и sizeof их и различают :)
формальное определение, приводимое в стандарте, на обычный человеческий язык все-таки переводится именно как "используйте идентификатор массива, как указатель на его элементы". если массив многомерный - элементом будет соответствующий подмассив, только и всего. единственное, чем этот идентификатор отличается от настоящего указателя, так это тем, что он по сути константа :)
по-моему, это так :)
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

Мастер Ломастер писал(а):очень просто - по наличию [] после идентификатора, и именно по этому признаку & и sizeof их и различают :)
В оперетте «Белая акация» в соответствующем данной цитате месте звучит «и дело тут вовсе не в суеверии, а в том, что число 13 несчастливое».

Потому-то и различают, что из-за наличия скобочек [] тип выражения, состоящего даже их одного имени массива уже без скобочек всё равно есть «массив», а не «указатель на».
И до тех пор, пока от этого выражения не потребовалось по контексту значение «указатель на» -- оно указателем не является, да и то в этот момент оно тоже не указатель, оно в этот момент отдаёт значение, соответствующее указателю.
Приблизительно как выше константа 5.5f не давала целочисленное значение 5 пока от неё этого не потребовалось. Оставаясь при этом float-константой всегда.

Вы там выше на вопросы попробовали ответить (себе)?
А тут:

Код: Выделить всё

int array[3]; // тут скобочки [] есть

int foo1()
{
    return sizeof(array); // тут скобочек [] нет
}

int foo2(int arg_array[3])  // тут скобочки [] есть
{
    return sizeof(arg_array);  // тут скобочек [] нет
}
Скобочки то есть, то нет, но sizeof прекрасно разбирается, где массив int, а где указатель на int.
По одной простой причине. arg_array таки указатель, а array -- таки нет.

Мастер Ломастер писал(а):на обычный человеческий язык все-таки переводится именно как "используйте идентификатор массива, как указатель на его элементы".
...
по-моему, это так :)
Переводится «и так тоже, но не исключительно так». Там, где нужен указатель -- имя массива можно в качестве него использовать.

Но если Вам нравится понимать язык на уровне разговорника, я помешать не могу.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Re: CodeVision AVR в вопросах и ответах

Сообщение demiurg301 »

avreal

Не могли бы вы объянить всё таки вот эту строку 2[arr]=0 - какието высшие материи С. Откуда "2" то в имени?

Код: Выделить всё

int foo( int arr[4] ) // какой тип у аргумента arr
{
    ++arr;      // допустима ли эта операция и что она делает
    2[arr] = 0; // что тут происходит
    return sizeof(arr); // что вернёт функция
}


Значит всё таки можно передавать в параметр функции массив или он будет преобразован в указатель на 1 элемент?
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Мастер Ломастер »

demiurg301 писал(а):2[arr]=0 - какието высшие материи С. Откуда "2" то в имени?
Си предоставляет вам более одного способа сделать ошибку :))) см. выше - катана, однако

demiurg301 писал(а):Значит всё таки можно передавать в параметр функции массив или он будет преобразован в указатель на 1 элемент?
в функцию попадет указатель на нулевой элемент этого массива

avreal писал(а):Скобочки то есть, то нет, но sizeof прекрасно разбирается, где массив int, а где указатель на int.По одной простой причине. arg_array таки указатель, а array -- таки нет.
что же тогда означает запись в аргументе функции foo2? указатель на 3 подряд идущих int-а? или что-то другое? каков смысл [3] в этом случае?

avreal писал(а):Переводится «и так тоже, но не исключительно так». Там, где нужен указатель -- имя массива можно в качестве него использовать.
собственно, я нигде и не утверждал, что "исключительно так". по-моему, первой части достаточно
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

Мастер Ломастер писал(а):что же тогда означает запись в аргументе функции foo2? указатель на 3 подряд идущих int-а? или что-то другое? каков смысл [3] в этом случае?
Не массив -- этого достаточно.
А Вам какая разница? Вам и так хорошо.
У Вас то общеутвердительное высказывание про то, что имя массива есть указателем (не оставляющее других вариантов и не имеющее никаких условий своей истинности):
Мастер Ломастер писал(а):документальнее не бывает. имя массива - это указатель объявленного типа на первый (нулевой) элемент массива.

То вдруг варианты есть...
Мастер Ломастер писал(а):собственно, я нигде и не утверждал, что "исключительно так".

Захочете узнать -- попробуете ответить себе на заданные в комментариях вопросы.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Мастер Ломастер »

avreal писал(а):Не массив -- этого достаточно.
А Вам какая разница? Вам и так хорошо.
не достаточно, выходит... объяснения, которые я даю себе, вполне укладываются в мое представление о предмете. а что не укладывается - я спрашиваю у вас.

по поводу моей "категоричности": в первом классе школьнику не объясняют, почему пишется ЛОШАДКА, а не ЛАШАДКА - просто говорят "так правильно". однако, это не означает, что объяснения нет. так и я в случаях, когда пытаюсь помочь начинающему, не углубляюсь в дебри, в которых могу и сам заблудиться, а даю наиболее емкое, но понятное (и, чаще всего, непротиворечащее с стандарту) определение. оно не полное, иначе вошло бы в стандарт :) но для начинающего приемлемое. думаю, из ваших пояснений ни у кого из начинающих ясности мгновенно не прибавилось, хотя они строго "научны".
Последний раз редактировалось Мастер Ломастер Вт сен 20, 2011 18:42:11, всего редактировалось 2 раза.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

demiurg301 писал(а):Не могли бы вы объянить всё таки вот эту строку 2[arr]=0 - какието высшие материи С. Откуда "2" то в имени?
Никаких высших материй. Прямое следствие того, что по стандарту

Код: Выделить всё

    expr1[expr2]
имеет смысл

Код: Выделить всё

    *(expr1 + (expr2))
и именно так его компилятор заталкивает в своё внутреннее представление.
А дальше работают указатели, обычная адресная арифметика.
Поскольку *(expr1 + expr2) эквивалентно *(expr2 + expr1), 2[array] означает то же, что array[2].
К моменту генерации кода уже всё равно, кто был первым в записи.

Особого смысла в записи 2[array] нет, просто демонстрация внутреннего устройства, логики языка. И механики компилятора.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

Мастер Ломастер писал(а):не достаточно, выходит... объяснения, которые я даю себе, вполне укладываются в мое представление о предмете. а что не укладывается - я спрашиваю у вас.
«не массив» -- достаточно для того, чтобы показать, что есть таки разница между указателем, независимо от способа его объявления, и именем массива. Но этот вопрос Вас не интересует.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Мастер Ломастер »

avreal писал(а):
Мастер Ломастер писал(а):не достаточно, выходит... объяснения, которые я даю себе, вполне укладываются в мое представление о предмете. а что не укладывается - я спрашиваю у вас.
«не массив» -- достаточно для того, чтобы показать, что есть таки разница между указателем, независимо от способа его объявления, и именем массива. Но этот вопрос Вас не интересует.
пусть так, если вам так проще - разница между именем массива и указателем меня не интересует. но меня интересует смысл [3] в аргументе. что оно означает? об этом ранее речи не было :)
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

Мастер Ломастер писал(а):когда пытаюсь помочь начинающему, не углубляюсь в дебри, в которых могу и сам заблудиться, а даю наиболее емкое, но понятное (и, чаще всего, непротиворечащее с стандарту)
В результате через короткое время он, запомнивший категоричное «имя -- указатель» будет или долго мучиться вопросом «как узнать размер массива» (sizeof(array) должен ведь дать размер указателя!), либо считать
count = sizeof(array) / sizeof(array[0]);
какой-то черной магией, хаком, неизвестно почему (и всегда ли) работающим.

«полуправда хуже лжи», «полузнание хуже незнания», «недоученый хуже неученного» -- никогда такого не слышали?
Имитацией правды, иллюзией знания.

Если бы не категоричность, если бы было точно так же «вполне достаточное для начинающего» частноутвердительное высказывание

«имя массива в большинстве случаев есть указателем на его первый элемент»

отметившее для него свою «половинчастость», необходимость в дальнейшем ещё что-то узнать -- я бы, возможно, вообще сюда не лез бы.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

demiurg301 писал(а):Не могли бы вы объянить всё таки вот эту строку 2[arr]=0 - какието высшие материи С. Откуда "2" то в имени?
Ага, точно, писал тут и тут тоже, и не так давно.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Ответить

Вернуться в «AVR»