реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Массив указателей. Инициализация
ISG2015
сообщение Jun 15 2015, 13:11
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 6-05-15
Пользователь №: 86 547



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

Код
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 - Jun 15 2015, 13:42
Go to the top of the page
 
+Quote Post
Spider
сообщение Jun 15 2015, 13:38
Сообщение #2


В поисках истины
***

Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923



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

ЗЫ. А зачем такое расточительство со вторым параметром? Он вроде как всегда цифра, да ещё и кратная 1000. Может лучше выделать под это дело какой-нить (ungisned char) ?
Go to the top of the page
 
+Quote Post
ISG2015
сообщение Jun 15 2015, 13:44
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 6-05-15
Пользователь №: 86 547



Работает. Удобно по очереди вынимать и выполнять. По поводу расточительства верное замечание, изначально хотелось иметь повыше "разрешение" для установки таймаутов выполнения АТ команд.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 15 2015, 13:53
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Создаете строковую переменную, с инициализацией. И адрес ее (имя) заносите в массив по нужному индексу.
Все показанные выше строки создаются в таблице строк.
Go to the top of the page
 
+Quote Post
ISG2015
сообщение Jun 15 2015, 14:00
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 6-05-15
Пользователь №: 86 547



Если с инициализацией, то это на этапе компиляции? Если так то это не совсем то что нужно.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 15 2015, 14:03
Сообщение #6


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(ISG2015 @ Jun 15 2015, 17:00) *
Если с инициализацией, то это на этапе компиляции? Если так то это не совсем то что нужно.

Строку (массив символов) ведь можете заполнить, когда захотите.
P.S. можете, и не заполняя строку, указатель записать в свой двумерный массив указателей. cool.gif
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 15 2015, 15:00
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



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

Ошибся, это именно массив указателей на константные строки, то есть не можете.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 15 2015, 22:07
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 15 2015, 23:00
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(ISG2015 @ Jun 15 2015, 19:11) *
Есть массив указателей:
...

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


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 11:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01424 секунд с 7
ELECTRONIX ©2004-2016