Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Вопрос по указателю (+)
Отправлено
Brut
17 октября 2009, г. 15:34
Объясните плз, мне нужна функция, которая найдёт позицию значения в строке относительно произвольной позиции. Я пишу:
unsigned int serch(unsigned char *puchMsg, unsigned char start)
{
unsigned char i = 0;
puchMsg += start; // смещаем указатель на start элементов от начала строки.
while ( (*puchMsg++) != 0x22 ) i++; // пока элемент строки не завен 0х22, бежим по строке.
return i;
}
Всё правильно?
Составить ответ
|
Вернуться на конференцию.
Ответы
Если это строка, то конец строки бывает? строка точно unsigned? неопределенный указатель порвёт фсё в клочья. на выражение в while компилер должен ругнуться, мол неопределен порядок действий, а в зависимости от порядка результат будет разный
-
Vit
(17.10.2009, 20:44:17
93.73.134.168
, 594 байт)
Еемного не так (+)
-
Brut
(17.10.2009, 21:57:49
83.149.41.103
, 569 байт)
не вкурил. а что такое "обычный пинг-понг буфер"?
-
Vit
(17.10.2009, 22:15:12
93.73.134.168
,
пустое
)
Двуслойный массив. В один слой пишется, например, входная инфа юарта, из другого её читает прог...{+}
-
Brut
(17.10.2009, 22:21:25
83.149.41.103
, 313 байт)
Странное чудо. Много минусов. Ну и ладно. Сами дойдёте.
-
Vit
(17.10.2009, 22:26:3
93.73.134.168
,
пустое
)
А если в кратце?
-
Brut
(17.10.2009, 22:45:14
83.149.41.103
,
пустое
)
Грубо: какая разница - лочить половину двумерного массива или использовать кольцевой буфер удвоенной длины? Аж в вероятном отсутствии копирования (что всё-равно сомнительно) или в одном копировании, но зато ненужности лока и мутоты по его обслуживанию
-
Vit
(17.10.2009, 22:57:13
93.73.134.168
, 111 байт)
Кажись понял (+)
-
Brut
(17.10.2009, 22:14:8
83.149.41.103
, 651 байт)
Хотя, так правильней: (+)
-
Brut
(17.10.2009, 22:19:2
83.149.41.103
, 393 байт)
ну дык. строка - всего лишь частный (особенный) случай массива. А если вдруг использование функции позволяет передать ей NULL в качестве указателя, то бояться этого нужно
-
Vit
(17.10.2009, 22:18:47
93.73.134.168
,
пустое
)
А если она будет работать ТОЛЬКО с моими двуслойными массивами известной длины, то можно без пр...{+}
-
Brut
(17.10.2009, 22:22:55
83.149.41.103
, 185 байт)
Типо да. Кстати, насчёт массива и смещения - можно передавать указатель не только на нулевой элемент массива - тогда вместо смещения нужно давать оставшуюся длину.
-
Vit
(17.10.2009, 22:35:52
93.73.134.168
, 314 байт)
Апшипка(+)
-
Vit
(17.10.2009, 22:37:6
93.73.134.168
, 85 байт)
Я думал об этом, но ИМХО одно и то же - что одно суммирование внутри, что одно вычитание на входе.
-
Brut
(17.10.2009, 22:44:14
83.149.41.103
,
пустое
)
Вычитание на входе одно и делается максимально оптимально компилером
-
Vit
(17.10.2009, 23:01:47
93.73.134.168
,
пустое
)
Нихрена - offset, это переменная, а не константа. Вычитать будет камень.
-
Brut
(17.10.2009, 23:06:30
83.149.41.103
,
пустое
)
внимательнее читаем - "на входе"
-
Vit
(17.10.2009, 23:08:48
93.73.134.168
,
пустое
)
Кроме того (+)
-
Brut
(17.10.2009, 22:57:36
83.149.41.103
, 242 байт)
проще возвращать указатель и разницу брать после вызова функции
-
Vit
(17.10.2009, 23:00:40
93.73.134.168
, 79 байт)
Да, ИМХО, тож на тож. Вот что в итоге родил:
-
Brut
(17.10.2009, 23:14:18
83.149.41.103
, 547 байт)
для форматирования есть таги pre и /pre (в квадратных скобках)
-
Vit
(17.10.2009, 23:37:46
93.73.134.168
, 865 байт)
Это слишком сложно для меня... Пока... Про теги понял, я пробовал [code] - не работали.
-
Brut
(18.10.2009, 00:17:26
217.118.66.13
,
пустое
)
while ( (*puchMsg++) != 0x22 && *puchMsg != NULL); и ++ я бы выделил отдельно - в упор не помню последовательности в таком случае (если она вообще стандартизирована)
-
DASM
(17.10.2009, 15:47:1
203.185.50.220
,
пустое
)
puchMsg увас в условии будет не один и тотже... учите
-
MARS
(17.10.2009, 16:35:16
77.122.166.244
,
пустое
)
херню написал, но проверку на ноль надо добавить
-
DASM
(17.10.2009, 15:52:18
203.185.50.220
,
пустое
)
А зачем проверка? (+)
-
Brut
(17.10.2009, 16:33:27
83.149.41.148
, 637 байт)
search
-
Oldring
(17.10.2009, 15:35:44
91.77.58.233
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 13:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru