Перейти к содержанию
    

Массив указателей. Инициализация

Есть массив указателей:

 

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"}
  };

 

Инициализируется на старте программы. Могу ли я изменить информацию на которую ссылаются указатели на этапе исполнения программы?

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

Спасибо!

Изменено пользователем ISG2015

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А такое вообще работает? У меня не работало когда-то давно в GCC. Приходилось объявлять каждую строку отдельно...

 

ЗЫ. А зачем такое расточительство со вторым параметром? Он вроде как всегда цифра, да ещё и кратная 1000. Может лучше выделать под это дело какой-нить (ungisned char) ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Работает. Удобно по очереди вынимать и выполнять. По поводу расточительства верное замечание, изначально хотелось иметь повыше "разрешение" для установки таймаутов выполнения АТ команд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создаете строковую переменную, с инициализацией. И адрес ее (имя) заносите в массив по нужному индексу.

Все показанные выше строки создаются в таблице строк.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если с инициализацией, то это на этапе компиляции? Если так то это не совсем то что нужно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если с инициализацией, то это на этапе компиляции? Если так то это не совсем то что нужно.

Строку (массив символов) ведь можете заполнить, когда захотите.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Могу ли я изменить информацию на которую ссылаются указатели на этапе исполнения программы?

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

Спасибо!

Ошибся, это именно массив указателей на константные строки, то есть не можете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

массив указателей на константные строки
Где именно тут указана константность? Я ее не вижу. Значит, ISG2015 может. Вопрос о целесообразности хранения всех этох строк в ОЗУ пока отставим.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть массив указателей:

...

 

Могу ли я изменить информацию на которую ссылаются указатели на этапе исполнения программы?

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

Спасибо!

Строки менять можете - ведь у вас массив указателей на эти строки. Сами строки компилятор положит в ОЗУ (даже если укажете, что это const). Длину строки тоже можете найти, т.к. каждая заканчивается нулем. Другое дело - зачем такое расточительство и зачем нужно изменять строки (при чем они все разной длины)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...