правильно ли написана функция
- Войдите на сайт для отправки комментариев
Вс, 03/09/2017 - 16:32
//Передаем сам массив и количество элементов в нем
unsigned char Sum(unsigned char *Array, unsigned char Len)
{
//Делаем тут что то c данными массива
// Добавляем пару байт в массив и возвращаем его
Array[Len] = BitLow;
Array[Len+1] = BitHigh;
return *Array;
}
вроде работает, но кажется я что то упустил
Конечно. Почитать учебник по Си. Размеры массивов задаются только один раз при объявлении. И эти размеры уже не меняюся. И контроля за размерами в Си нет.
А как мне тогда добавить еще несколько элементов в уже существующий массив?
Объявляй массив заранее с нужным количеством элементов.
просто по уарту могут прийти разные массивы, с разным количеством элементов
/*Main*/ //-------------------------------- //---Компоновка----------------------------- char *Sum;//<-- это указатель //---main----------------------------- int main() { init(); //setup() Serial.begin(9600); Sum = new char[10]; // Вот теперь считайте что у вас есть массив на 10 элнментов Sum[0] = '0';; Serial.println(Sum[0]); // надо больше удаляем старый и получаем новый delete[] Sum; Sum = new char[20]; // теперь на 20 ячеек Sum[0] = '^'; Serial.println(Sum[0]); for (;;) { //loop() } return 0; } /*Скетч использует 2084 байт (6%) памяти устройства. Всего доступно 30720 байт. Глобальные переменные используют 198 байт (9%) динамической памяти, оставляя 1850 байт для локальных переменных. Максимум: 2048 байт. */вроде работает
:)
Мухоморы можно кушать, но только один раз :)
qwone, Вы по случаю восресенья немного приняли на грудь? И поди не закусывали?
/*Main*/ //-------------------------------- //---Компоновка----------------------------- unsigned int size = 10; char *Sum = new char[size]; void resize(unsigned int size_) { char *Sum_ = new char[size_]; for (unsigned int i = 0; i <= size; ++i) { Sum_[i] = Sum[i]; } delete[] Sum; Sum = Sum_; } //---main----------------------------- int main() { init(); //setup() Serial.begin(9600); strcpy(Sum, "qwerty"); Serial.println(Sum); resize(20); Serial.println(Sum); for (;;) { //loop() } return 0; } /*Скетч использует 2154 байт (7%) памяти устройства. Всего доступно 30720 байт. Глобальные переменные используют 204 байт (9%) динамической памяти, оставляя 1844 байт для локальных переменных. Максимум: 2048 байт. */qwone, ты слышал когданить про побочный эффект функции, и почему, еще со времен Фортрана, его надо стараца избегать?
qwone, ты слышал когданить про побочный эффект функции, и почему, еще со времен Фортрана, его надо стараца избегать?
на Фортране был интерплетатор
Вы больше никому этого не говорите, а то ... чего доброго :)
qwone, спасибо. Давно так не ржал.
на Фортране был интерплетатор
Правильно говорят: век живи - век учись.
Оказывается, и по истечениии 40 лет использования Фортрана, можно узнать о нем что-то новое...