Массив строк
- Войдите на сайт для отправки комментариев
Втр, 27/06/2017 - 10:58
Всем привет!
Не очень понятна работа массива со строками. В частности на примере следующего кода сформирую вопросы:
char* myStrings[]={"This is string 1", "This is string 2", "This is string 3", "This is string 4", "This is string 5","This is string 6"}; void setup(){ Serial.begin(9600); } void loop(){ for (int i = 0; i < 6; i++){ Serial.println(myStrings[i]); delay(500); } }
1. Как создать пустой массив для последующего доавления строчных элементов?
2. Как добавлять в такой массив элементы не исключая старые?
3. Как узнать размер такого массива, чтобы в последчтвии перебрать построчно?
4. Как очистить массив.
1. Как создать пустой массив для последующего доавления строчных элементов?
2. Как добавлять в такой массив элементы не исключая старые?
3. Как узнать размер такого массива, чтобы в последчтвии перебрать построчно?
4. Как очистить массив.
1. массивы пустыми не бывают.
2. никак.
3. ты это должен знать при создании массива.
4. никак.
2. Как добавлять в такой массив элементы не исключая старые?
Возможно тогда, как вариант, перезаписать массив создав его снова и перезаписав (перебирая с добавлением нового элемента) элементы с новым.
3. Как узнать размер такого массива, чтобы в последчтвии перебрать построчно?
sizeof(char) это не то пальто?
1. Как создать пустой массив для последующего доавления строчных элементов?
2. Как добавлять в такой массив элементы не исключая старые?
3. Как узнать размер такого массива, чтобы в последчтвии перебрать построчно?
4. Как очистить массив.
Если Вам нужна такая продвинутая функциональность, то Нужно просто создать класс Array со всеми необходимыми методами и пользовать на здоровье (по анаогии хоть с Array в JScript). Можно попробовать выдрать готовую реализацию Array из какого-нибудь обощённого STL или ещё откуда - их готовых 100500.
Насколько всё это будет убийственно для памяти и других ресурсов - тут Вы сам себе злобный Буратино.
В С++ ведь настоящих массивов нет, есть только индексируемые области памяти :)
1. Как создать пустой массив для последующего доавления строчных элементов?
2. Как добавлять в такой массив элементы не исключая старые?
3. Как узнать размер такого массива, чтобы в последчтвии перебрать построчно?
4. Как очистить массив.
1. Пустой - по-моему никак. Но можно создать массив заранее оговоренного размера с пустыми элементами. Поскольку этот массив будет содержать только указатели на строки, пустые элементы не будут занимать много места.
2. При условии обьявления массива указателей, как в п. 1 -
или
3. Об этом вам придется позаботиться самому. Обычно просто пробегают по массиву, ища первую пустую ссылку
4. Если вы создаете его как глобальную переменную - можете не чистить
Вообще-то в GCC есть STL'вский std::array, но в поставке ардуино это благополучно выброшено. Хотите - можете перейти на Studio - там наверняка есть (хотя, не проверял).
หนังสือยอดเยี่ยม Замечательная книга
C++ How to Program - Paul J. Deitel, Harvey M. Deitel
3. Об этом вам придется позаботиться самому. Обычно просто пробегают по массиву, ища первую пустую ссылку
А что за пустая ссылка? Недопонимаю немного.
2. При условии обьявления массива указателей, как в п. 1 -
или
Должен поправится, утром в п.2 сообщения #2 написал фигню, странно что гуру промолчали. Первая строчка обьявляет только массив пустых указателей, то есть указателей, которые никуда не указывают. Если попытаться присвоить членам этого массива строки или скопировать их туда функцией strcpy - мы будем писать в неразмеченную память и это закончится печально. Прежде чем помещать в массив строки, необходимо выделить для них память функцией malloc
.
Правильно так
Правильно так
ты проверял?
ты проверял?
Неа. Что, опять не так?
Если вам хочется маятся , то займитесь перегрузкой операторов.
Если вам хочется маятся , то займитесь перегрузкой операторов.
нет, мне не хочется :) Я просто за правду :)
Если вам хочется маятся , то займитесь перегрузкой операторов.
А что в ней такого "маятного". Красивое решение, позволяющее инкапсулировать всю мелочёвку.
А я ссылку забыл вставить. http://cppstudio.com/post/10058/