Передача массива.

AlexSmith
Offline
Зарегистрирован: 21.09.2019

Добрый вечер. Имею массив на 10 байт byte buffer[10]. В одной библиотеке нужно передать через запятую индекс массива и данные ячейки. Как реализовать это? Заранее спасибо.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А что Вам мешает сделать именно то, что Вы описали?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

AlexSmith пишет:

Добрый вечер. Имею массив на 10 байт byte buffer[10]. В одной библиотеке нужно передать через запятую индекс массива и данные ячейки. Как реализовать это? Заранее спасибо.

Ничего не понял. Пример можно?

AlexSmith
Offline
Зарегистрирован: 21.09.2019

Я незнаю как разделить индекс и данные

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Пример можно, что именно Вы хотите передавать?

AlexSmith
Offline
Зарегистрирован: 21.09.2019

(номер ячейки массива,данные ячейки массива)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Значит, примера не будет? Ну, тогда сами разбирайтесь.

Ну, не понимаю я о каких данных идёт речь, дважды просил написать пример в виде пары строк кода, что мне на коленях его вымаливать? Мне оно не надо, Вам, похоже, тоже.

Успехов!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Именно так, как Вы и написали: разделить запятой.

AlexSmith
Offline
Зарегистрирован: 21.09.2019

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

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

AlexSmith, уже 8 постов мы толчем воду в ступе.

У меня к Вам нескромный вопрос: Вы Кернигана с Ритчи читали?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

AlexSmith пишет:

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

Не лучше читать переписку Энгельса с Каутским https://www.youtube.com/watch?v=G7BOmgwH14I   Взять все и поделить. :))

MaksVV
Offline
Зарегистрирован: 06.08.2015

AlexSmith пишет:

Добрый вечер. Имею массив на 10 байт byte buffer[10]. В одной библиотеке нужно передать через запятую индекс массива и данные ячейки. Как реализовать это? Заранее спасибо.

byte buffer[10];    

передаём в функцию , например, индекс (номер) элемента 5 и данные этого элемента массива: 

foo (5, buffer[5]); 

 

nik182
Offline
Зарегистрирован: 04.05.2015

Номер то зачем, если данные передаются? Или зачем данные, если есть номер? Данные нельзя в подпрограмме достать по номеру?

Гриша
Offline
Зарегистрирован: 27.04.2014

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

не считайте строки выше как ответ, я просто попытался УГАДАТЬ чего вы хотите, совсем не факт, что угадал. 

еще один человек пишет вам, что вопрос непонятен.

сам массив не имеет информации о себе, он он даст вам посылку типа: получите из пятой ячейки содержимое 86. Это вы просто берете из пятой ячейки.

MaksVV
Offline
Зарегистрирован: 06.08.2015

Что просили то и показал)

AlexSmith
Offline
Зарегистрирован: 21.09.2019

Зачем мне весь масив.. больше слов понаписали....

Мне надо 2 значения вписать через запятую ( index 0 , val 255) и так далее..

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Коллеги! Не спугните! Он еще долго нас забавлять может, судя по невообразимой тупости.

AlexSmith
Offline
Зарегистрирован: 21.09.2019

В чем тупость то? или я ошибся форумом? Невыобразимая тупость это странца постов со стебом... Нах вы вообще что то пишете тогда. Д... бл ть.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

AlexSmith пишет:

В чем тупость то?]

Вот в этом

AlexSmith пишет:

Мне надо 2 значения вписать через запятую ( index 0 , val 255) и так далее..

Вам показать, где запятая на клавиатуре? Или нужно объяснить, что такое запятая в принципе?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

AlexSmith пишет:

В чем тупость то? или я ошибся форумом? Невыобразимая тупость это странца постов со стебом... Нах вы вообще что то пишете тогда. Д... бл ть.

Мы надеемся, что тот, кто создал тему, будет хотя бы читать ответы.

Но, похоже, напрасно.

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

b707
Offline
Зарегистрирован: 26.05.2017

AlexSmith пишет:

В чем тупость то?

в том. что ответ на вопрос уже дали - в сообщении 11 - а ты так ничего и не понял

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

b707 пишет:

AlexSmith пишет:

В чем тупость то?

в том. что ответ на вопрос уже дали - в сообщении 11 - а ты так ничего и не понял

Вообще-то в №11 был пример, а ответов в этой ветке - намного больше. Но ТС, похоже, ни одного не понял.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016
var = 0;

while(var < 200){
 // выполнить что-то, повторив 200 раз - число элементов в массиве
Serial.print(var);
Serial.print(",");
Serial.println(massiv[var]);
 var++;
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, вот, граф, сам же и спугнул. Так до пятницы не доживёт :-(

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Зато ua6em исправил ситуацию.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Ничо вы не поняли, вообще ничего!!. Написал же ТС:

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

А вы тут функции разные «рисуете», а причём тут функции если «передать нужно в библиотеке (может и «в библиотеку», но это не точно»)?! Правда, что за библиотека не известна. Но это уже третий вопрос. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

может это библиотека Белинского. Берем ноут , песдуем в библиотеку и далее по нарастающей....

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Я последний раз в библиотеку «по читательскому билету» ходил. 

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

  if(Serial.available()>0){                                          // serial process, in
    c=Serial.read();
    switch((byte)c){
      case 116: serial_int_content=1; serial_int_buffer=0; break;  // t, operation time in sec
      case 97:  serial_int_content=2; serial_int_buffer=0; break;  // a, active time in msec*10 (100th/sec)
      case 100: serial_int_content=3; serial_int_buffer=0; break;  // d, desired current in uA
      case 101: serial_int_content=4; serial_int_buffer=0; break;  // e, enable
      case 110: serial_int_content=5; serial_int_buffer=0; break;  // n, select remote
      case 120: bMonitor=0; bQuery=1; break;                       // x, send current data
      case 114: bReport=1; break;                                  // r, ack last actual data
      case 113: if(remote_n!=10){ bMonitor=1; bQuery=1; }else bReport=1; break;  // q, ack current data
      case 13:                       // EOL, terminate buffer
        if(serial_int_content==5) remote_n=(byte)serial_int_buffer-1;
        if(remote_n!=10) switch(serial_int_content){
          case 1: est_per[remote_n]=serial_int_buffer; break;
          case 2: act_per[remote_n]=serial_int_buffer; break;
          case 3: act_pow[remote_n]=serial_int_buffer; break;
          case 4: if(serial_int_buffer==1) act_en[remote_n]=1; else act_en[remote_n]=0; break;
        }
        serial_int_content=0;
      break;
      default:                       // possible digital, attempt to parse
        if(c>=48 && c<=57 && serial_int_content>0){
          c-=48;
          serial_int_buffer*=10;
          serial_int_buffer+=c;
        }
       break;
    }
  }

Пояснять лень, сами разберётесь.

Эй олл, как вам код? Достаточно говнянный? На меня эйчарихи обидятся? ~23 года живу, джуниором (или как там у них это называется) устроиться даже не пытался - они всё равно нос воротят, а я не перестану их всех сынками и воробушками считать, потому что они занимаются этим не так долго как я. А надо наверно линтить, рефакторить, и тогда зарплата 100к будет. Но я им лучше петарду под хвост засуну и подожгу.

nik182
Offline
Зарегистрирован: 04.05.2015

Свич любит циферки вподряд. Если разные, то код сгенерённый от кода с ифами не отличается. А как понятнее это на любителя.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

nik182 пишет:
Свич любит циферки вподряд.
Да, не, это раки любят, когда их в кипяток живыми бросают, Вы перепутали :-)

nik182
Offline
Зарегистрирован: 04.05.2015

Да не. Не перепутал. Попробуйте цифирки вподряд и нет. Во втором случае время выполнения и размер кода больше.   

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А какое это имеет отношение к тому, "что любит свич"?

nik182
Offline
Зарегистрирован: 04.05.2015

Юмора в Вас мало. Дидате свичу циферки вподряд, он быстрый и короткий код сгенерит. А если с прострелами или задом наперёд то код не будет отличаться от того, что написать через пачку ифоф. А уж как кому читать код удобней - через свич или через иф это личное. К тому же брейк в конце каждого ключа свига это гото в чистом замаскированном виде.    

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

nik182 пишет:

Дидате свичу циферки вподряд, он быстрый и короткий код сгенерит.

Т.е. это у нас теперь свич код генерит? 

Или компилятор?

Или стандарт языка?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

други, а не отклонились ли мы от темы, понятно, что существует 99 способов реализации, а профессор вон говорит, что сто )))

nik182
Offline
Зарегистрирован: 04.05.2015

В зависимости от того как Вы расположите ключи в свиче компилятор создаст разный код. Если ключи не в подряд то не смысла использовать свич для оптимизации кода.  

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

nik182 пишет:

...то не смысла использовать свич для оптимизации кода.  

А он как бы для этого и не предназначен.

sadman41
Offline
Зарегистрирован: 19.10.2016

А я вот читал, что канпилятор просто строит для свитча таблицу переходов и сам учитывает наиболее часто вызываемые ветки, располагая их в начале таблицы.

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:
А я вот читал, что канпилятор просто строит для свитча таблицу переходов и сам учитывает наиболее часто вызываемые ветки, располагая их в начале таблицы.

а как он может сделать, если итератор - переменная?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

b707 пишет:

sadman41 пишет:
А я вот читал, что канпилятор просто строит для свитча таблицу переходов и сам учитывает наиболее часто вызываемые ветки, располагая их в начале таблицы.

а как он может сделать, если итератор - переменная?

Дак ключи-то константы. :-)

Конечно, с наиболее часто вызываемыми грустец погорячился, компилятор знать не знает, хто будет вызываться чаще, но отсортировать ключи ему точно под силу. :-)

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

Дак ключи-то константы. :-)

да?

хм... вы о каком коде - из #28 ? Как компилятор угадает, какое значение c будет появлятся в программе чаще - 101 или 103?

sadman41
Offline
Зарегистрирован: 19.10.2016

Найду статейку - кину ссылку, эностранец какой-то заморочился на этот счёт. Я, правда, давно уже читал - мож и подзабыл койчо.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Когда анажды мне пришлось в ассемблере делать аналог switch, с ключами uint16_t, я делал 2 таблицы, одна, отсортированная, с ключами, в которой простым SCASW осуществлялся поиск нужного. Если нашелся, из другой таблицы брался адрес перехода на нужную ветку. Не нашолся - добро пожаловать в default. :-)

Смысл был в том, что если ключей много, то поиск нужного баще всего организовывать не простым SCASW, а бинарным поиском. В отсортированном списке это делать легче лехкого. 

sadman41
Offline
Зарегистрирован: 19.10.2016

Ну да, так и пишут в энторнетах:

---------------
As a side note - Compilers, such as MSVC and GCC, have implemented an optimization on switches that tests the switch conditions using a binary search. So a switch statement with, say, 256 elements, will be optimized down to, at most, 8 compare operations.
---------------

Но, у меня, похоже, немного смешались люди и конина:

-----------
"For many years I wrote switch statements under the assumption that the case values would be evaluated from top to bottom. That is, if the compiler chose to implement the switch statement as an if-else-if chain, then it would first test the first case, then the second case and so on down to the default case at the bottom of my source code. Well it turns out that my assumption was completely wrong. The compiler is under no such obligation, and indeed will often evaluate the values bottom to top. Furthermore, the compiler will often evaluate the default value first."
-----------

https://embeddedgurus.com/stack-overflow/2010/04/efficient-c-tip-12-be-wary-of-switch-statements/