Работа с глобальным массивом внутри функции
- Войдите на сайт для отправки комментариев
Втр, 24/09/2019 - 15:09
Все привет. Пытаюсь работать с массивами. Есть глобальный массив, с которым я работаю в теле самой программы. Заполнять этот массив должна функция в которой происходит получение и структурирование данных для конкретного массива.
#define addr 0x20 bool key0[8]; - глобальный массив bool request_from_wire(int addr, bool *key) { Wire.requestFrom(addr,1); byte recive_byte = Wire.read(); //получаю данные в виде одного байта byte mov=1; //шаг сдвига for(int i=0; i<8;i++) //цикл заполнения массива { key[i]=!(recive_byte & mov); mov=mov<<1; return key[i]; } } Serial.print(request_from_wire(addr, key0[7])); // читаю восьмой элемент массива
Но вместо конкретного элемента массива передается только первый элемент. Что я не так делаю?
Что, по вашему мнению, делает строка №17 ?
В идеале хотелось бы в цикле крутить
И постоянно иметь массив с актуальной ниформацией.
Что, по вашему мнению, делает строка №17 ?
возвращает значение итого элемент
Что, по вашему мнению, делает строка №17 ?
возвращает значение итого элемент
А на котором обороте цикла она возвращает "итого элемент"?
Что, по вашему мнению, делает строка №17 ?
возвращает значение итого элемент
А на котором обороте цикла она возвращает "итого элемент"?
по мере заполнения. я вот и понимаю, что надо возвращать заполненный массив, а не конкретное значение.
Что, по вашему мнению, делает строка №17 ?
возвращает значение итого элемент
А на котором обороте цикла она возвращает "итого элемент"?
по мере заполнения. я вот и понимаю, что надо возвращать заполненный массив, а не конкретное значение.
А нахрена его возвращать, он и так всем ветрам открыт и всем шпионам виден, он же глобальный
Что, по вашему мнению, делает строка №17 ?
возвращает значение итого элемент
А на котором обороте цикла она возвращает "итого элемент"?
по мере заполнения. я вот и понимаю, что надо возвращать заполненный массив, а не конкретное значение.
А нахрена его возвращать, он и так всем ветрам открыт и всем шпионам виден, он же глобальный
даже если так, данные в массиве все равно не меняются.
Не. Я седня не помогальщик. Щас ктонить паттянеца еще.
Если Serial.println(i) после строки 15 не поможет понять, в чём дело, то я тоже сливаюсь. Потому что эта тема для "песочницы".
i'm sorry i can't now. This is only as example of what can be done.
https://playground.arduino.cc/Code/I2CEEPROM/
Ребята, Вас разводят на написание кода.
Эта байда и не подумает компилироваться. Я уж не говорю про комментарий в строке №3, но использование продефайненного как число addr в качестве имени параметра ...
Clampo,
давайте так, Вы выключите вынос мозга и выложите ту самую программу, которая Вас не устраивает. Которая компилируется, но делает что-то не то. Иначе, есть сомнения в том, что Вы уважаете тех, к кому обратились.
ЕвгенийП если не хотите помочь - зачем грубить!?
Я не профессионал, пытаюсь разобраться и задаю конкретный вопрос, если вы не увидели! Или дальше 3-й строчки не читали!? И уж тем более никого не развожу на написание кода! У вас сомнения, а я четко вижу, что вы людей не уважаете в принципе, если начинаете хамить не разобравшись до конца в ситуации!
По поводу программы - она прекрасно компилируется, но передает только 1-е значение массива.
Вот вся программа целиком:
Если Serial.println(i) после строки 15 не поможет понять, в чём дело, то я тоже сливаюсь. Потому что эта тема для "песочницы".
если так сделать досчитывает до 7 и больше ничего не выдает.
del
эта переменная только внутри функции
вы понимаете что key0 обьявлен как массив указателей( т.е. массив массивов) ?
del
эта переменная только внутри функции
я конечно совершенно нулевой, но мне не нравиться название функции, кажется пересекается с названием функции в библиотеке
По поводу программы - она прекрасно компилируется, но передает только 1-е значение массива.
Вам же во втором посте дали ответ с намеком, что делает строчка
return
key[i];
Она возвращает нулевой элемент вместе с выходом из функции request_from_wire.
Так понятнее?
Понятнее.
Еще думаю, что указатель на массив должен быть только в параметрах функции. Верно?
Нет. Не только. Где угодно, но правильнее да, в качестве аргумента функции.
ЕвгенийП если не хотите помочь - зачем грубить!?
Почему не хочу? Я скопировал Ваш код в IDE, и стал пытаться его запустить с целью досконально разобраться и помочь Вам. Т.е. я очень хотел Вам помочь, даже попытался запустить Ваш код, а не просто глазами посмотреть. Вы это называете "не хотите"?
А когда я обнаружил, что он элементарно не компилируется, но при этом Вы утверждаете, что он там что-то делает, возникли некоторые эмоции. Вас это удивляет?
Хотите помощи, выкладывайте реальный код, а не издевайтесь над людьми.
Пока же я вижу, что вместо извинений за левый код, на который я потратил время, Вы предпочли наехать на меня. ну, дело Ваше, поступайте как считаете нужным.
ЕвгенийП если не хотите помочь - зачем грубить!?
Почему не хочу? Я скопировал Ваш код в IDE, и стал пытаться его запустить с целью досконально разобраться и помочь Вам. Т.е. я очень хотел Вам помочь, даже попытался запустить Ваш код, а не просто глазами посмотреть. Вы это называете "не хотите"?
А когда я обнаружил, что он элементарно не компилируется, но при этом Вы утверждаете, что он там что-то делает, возникли некоторые эмоции. Вас это удивляет?
Хотите помощи, выкладывайте реальный код, а не издевайтесь над людьми.
Пока же я вижу, что вместо извинений за левый код, на который я потратил время, Вы предпочли наехать на меня. ну, дело Ваше, поступайте как считаете нужным.
Извините, Евгений, что потратил ваше время. Надеюсь, такого больше не повториться и каждый научится на своих ошибках.
и все таки
и все таки
Согласен, так работать будет. Только смысл в том, что в программе несколько адресов и массивов.
ну дак ты тогда более подробно опиши задачу, что ты делаешь, и что хочешь получить. И что не выходит.
ну дак ты тогда более подробно опиши задачу, что ты делаешь, и что хочешь получить. И что не выходит.
Так в самом первом посте все и описал.
Все привет. Пытаюсь работать с массивами. Есть глобальный массив, с которым я работаю в теле самой программы. Заполнять этот массив должна функция в которой происходит получение и структурирование данных для конкретного массива.
лично с меня - хватит, в хитросплетеньях чужой логики я разбираца не имею желания
Есть глобальный массив, с которым я работаю
разбирайся сам, чотыхошь.
Пока я вижу, что там, где ты используешь массив, хватит и одного байта, разбитого по битовым полям. А уж 1 байт отдавать не в пример легше.
лично с меня - хватит, в хитросплетеньях чужой логики я разбираца не имею желания
Есть глобальный массив, с которым я работаю
разбирайся сам, чотыхошь.
Пока я вижу, что там, где ты используешь массив, хватит и одного байта, разбитого по битовым полям. А уж 1 байт отдавать не в пример легше.
Создается впечатление, что вы меня троллите. Я пытаюсь разобраться с указалелями на массив, а не то что мне использовать в моей программе. Если эта такая легкая тема, может скажите где почитать про это? Пока я только нагуглил разъяснение обратного действия - загрузка массива в функцию. Сразу еще вопрос про бит - ардуино адекватно воспринимает, байт у которого первый бит 0?
а у меня даже не впечатление стойкое, а убеждение, что ситуация обратна.
а у меня даже не впечатление стойкое, а убеждение, что ситуация обратна.
Я обратился на форум, с просьбой о помощи в конкретном вопросе. В итоге вместо помощи, меня обвинили в том что я ничего не знаю и над всеми издеваюсь. Это же очевидно, что я не знаю, для этого я и прошу помочь. Если бы я сам знал - зачем мне спрашивать!? К тому же, по некоторым участникам четко видно, что особым знанием они и сами не обладают, что подтверждают в виде своих нападок на новичков, обвиняя их в некомпетентности, вместо ответов по теме.
а вам-то что нужно? Передав указатель на массив в функцию - вы получаете внутри полный доступ к массиву. Хотите "загружаете", хотите - "выгружаете".
Что тут обсуждать-то вообще?
а вам-то что нужно? Передав указатель на массив в функцию - вы получаете внутри полный доступ к массиву. Хотите "загружаете", хотите - "выгружаете".
Что тут обсуждать-то вообще?
Не знаю как правильно это сделать.
Абсолютно с тобой согласен. О моей некомпетентности ходют легенды, но нападать на неофитов - этта моё призвание. :)
Особенно, када неофит за 6 лет регистрации с массивами не разобрался
А книжку почитать про массивы и указатели?
Если тупо ответить "как сделать" - возьмите свой код из первого поста, выкиньте строчку номер 17 - и все будет работать.
Только именно код из заглавного поста, потому что то, что вы потом постили как "полный код" - это не код, а чушь
Абсолютно с тобой согласен. О моей некомпетентности ходют легенды, но нападать на неофитов - этта моё призвание. :)
Особенно, када неофит за 6 лет регистрации с массивами не разобрался
Тут все отвечают, с учетом даты регистрации?
Особенно, када неофит за 6 лет регистрации с массивами не разобрался
Я обязан был? Я может 6 лет постигал как светодиодом без delay моргать.
Не будет. Я точно не пошутил в #11 - он даже не скомпилируется.
Я обязан был? Я может 6 лет постигал как светодиодом без delay моргать.
не обязан. Но с такими способностями обьяснять вам еще 12 лет, как пользоватся массивами - мы тоже не обязаны.
Не будет. Я точно не пошутил в #11 - он даже не скомпилируется.
будет, после необходимой правки, естесственно. То что код неполный, я вижу. Писать полный код за ТС никто не подряжался.
https://www.youtube.com/watch?v=2H9StVnc6xc&feature=youtu.be
А книжку почитать про массивы и указатели?
Если тупо ответить "как сделать" - возьмите свой код из первого поста, выкиньте строчку номер 17 - и все будет работать.
Только именно код из заглавного поста, потому что то, что вы потом постили как "полный код" - это не код, а чушь
В общем, спасибо за наводки и подсказки. Оказалось я почти дошел до искомого, но в конце свернул не туда.
Вот правильно работающая функция:
Оказалось я почти дошел до искомого, но в конце свернул не туда.
программируем методом тыка? Не сработало key - поставим *key или key[0] ? :)
И так шесть лет
Оказалось я почти дошел до искомого, но в конце свернул не туда.
программируем методом тыка? Не сработало key - поставим *key или key[0] ? :)
И так шесть лет
Я писал, что пытался разобраться с указателями, читал по этому поводу статьи, пытался понять сам принцип работы на конкретном примере, постепенно изучаю язык самостоятельно. Сомневаюсь, что у вас при изучении не было глупых вопросов.
Вот вы мне скажите, господа, вы на этом форуме для чего - помогать, отвечать на вопросы или оскорблять и говорить какие вы умные!? Это форум Ардуино, Ардуино априори предполагает новичков и их незнание. Но, вы, гуру программирования, почему то здесь, а не на проф. форумах, где люди имеют базу. Да потому что у самих знаний не хватает и среди профессионалов вам нечего сказать. Когда люди тешат свое эго за счет других это уже психическое расстройство из-за фобий или угнетений, или ограниченности в ином плане ранее. И будут ли вас после этого воспринимать авторитетными, знающими людьми, к совету которых можно прислушаться большой вопрос. Так, очередные выскочки, на глупые вопросы которых кто-то ответил ранее. Очень не солидно, господа.
Ардуино априори предполагает новичков и их незнание.
Это кто такое придумал? Arduino - это ускоритель разработки сложных микроконтроллерных устройств, а не группа для всех детей, которых родители не смогли устроить в другие кружки.
а вот щас прям совсем стыдно стало.
наданапица.
Ардуино априори предполагает новичков и их незнание.
Это кто такое придумал? Arduino - это ускоритель разработки сложных микроконтроллерных устройств, а не группа для всех детей, которых родители не смогли устроить в другие кружки.
Сложных восьмибитных, забыли добавить.
Сложных восьмибитных, забыли добавить.
Для МК писать не в пример сложнее, чем лабать на php, например. Так что меньшая битность - больший геморрой.
Ардуино априори предполагает новичков и их незнание.
Это распространенная ошибка. Да, ардуино - это игрушка, но это игрушка для программистов, а не для "каждой кухарки".
Знания Си тут нужны не менее серьезные, чем для какого-нить болього десктопного проекта.
Вот вы мне скажите, господа, вы на этом форуме для чего - помогать, отвечать на вопросы
Скажите, только честно, Вы правда считаете, что люди приходят на форум исключительно для того, чтобы отвечать на Ваши вопросы и реализовывать Ваши хотелки?
Что Все мы здесь находимся (ну, или должны находиться) исключительно с целью избавить ленивые задницы от необходимости учиться самостоятельно, немедленно предоставляя ответы на все их идиотские вопросы, которые они не могут толком сформулировать и, уж тем более, не могут понять ответ, даже если его получат?
Вы действительно полагаете, что Вам здесь все должны?
а вот щас прям совсем стыдно стало.
наданапица.
ТС не мог два дня подождать - среда ведь только :)