Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Массив указателей. Инициализация
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
ISG2015
Есть массив указателей:

Код
static char * Commands[12][2] =
  {
      {"AT\r","1000"},
      {"ATE0\r","1000"},
      {"AT+CPIN?\r","1000"},    
      {"AT+CREG?\r","1000"},
      {"AT+CGATT?\r","1000"},
      {"AT+CIPSHUT\r","1000"},
      {"AT+CIPSTATUS\r","1000"},
      {"AT+CIPMUX=0\r","1000"},    
      {"AT+CSTT=\"internet\"\r,"5000"},
      {"AT+CIICR\r","5000"},
      {"AT+CIFSR\r","5000"},
      {"AT+CIPSTART= \"UDP\" , \"210.286.252.161\", \"14000\"\r","5000"}
  };


Инициализируется на старте программы. Могу ли я изменить информацию на которую ссылаются указатели на этапе исполнения программы?
Не улавливаю где располагает компилятор отдельные строки ,как их там хранит и есть ли возможность что-то менять.
Спасибо!
Spider
А такое вообще работает? У меня не работало когда-то давно в GCC. Приходилось объявлять каждую строку отдельно...

ЗЫ. А зачем такое расточительство со вторым параметром? Он вроде как всегда цифра, да ещё и кратная 1000. Может лучше выделать под это дело какой-нить (ungisned char) ?
ISG2015
Работает. Удобно по очереди вынимать и выполнять. По поводу расточительства верное замечание, изначально хотелось иметь повыше "разрешение" для установки таймаутов выполнения АТ команд.
ViKo
Создаете строковую переменную, с инициализацией. И адрес ее (имя) заносите в массив по нужному индексу.
Все показанные выше строки создаются в таблице строк.
ISG2015
Если с инициализацией, то это на этапе компиляции? Если так то это не совсем то что нужно.
ViKo
Цитата(ISG2015 @ Jun 15 2015, 17:00) *
Если с инициализацией, то это на этапе компиляции? Если так то это не совсем то что нужно.

Строку (массив символов) ведь можете заполнить, когда захотите.
P.S. можете, и не заполняя строку, указатель записать в свой двумерный массив указателей. cool.gif
Dr.Alex
Цитата(ISG2015 @ Jun 15 2015, 16:11) *
Могу ли я изменить информацию на которую ссылаются указатели на этапе исполнения программы?
Не улавливаю где располагает компилятор отдельные строки ,как их там хранит и есть ли возможность что-то менять.
Спасибо!

Ошибся, это именно массив указателей на константные строки, то есть не можете.
Сергей Борщ
Цитата(Dr.Alex @ Jun 15 2015, 18:00) *
массив указателей на константные строки
Где именно тут указана константность? Я ее не вижу. Значит, ISG2015 может. Вопрос о целесообразности хранения всех этох строк в ОЗУ пока отставим.
prottoss
Цитата(ISG2015 @ Jun 15 2015, 19:11) *
Есть массив указателей:
...

Могу ли я изменить информацию на которую ссылаются указатели на этапе исполнения программы?
Не улавливаю где располагает компилятор отдельные строки ,как их там хранит и есть ли возможность что-то менять.
Спасибо!
Строки менять можете - ведь у вас массив указателей на эти строки. Сами строки компилятор положит в ОЗУ (даже если укажете, что это const). Длину строки тоже можете найти, т.к. каждая заканчивается нулем. Другое дело - зачем такое расточительство и зачем нужно изменять строки (при чем они все разной длины)?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.