Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Объясните строку кода C++ / 9 сообщений из 9, страница 1 из 1
06.01.2015, 14:28
    #38849182
denisknn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните строку кода C++
Функции передаются параметры:
data строка символов (например из 121 символа);
datalen длина этой строки (121).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int function(unsigned char *data, int datalen, unsigned char *out) {
	unsigned char	*p,
			*l;
	p = data;
	l = data + datalen;
	while (p < l) {
		// какой-то код
	}


Я в С++ не разбираюсь и не могу понять как можно сложить строку и число?
При дебаге в Visual Studio переменная l приобретает значение 0x0048a254 "ээээ««««««««"
Так потом еще и сравнивается строка p с получившейся l
Как это понимать по-русски? Желательно на php.
...
Рейтинг: 0 / 0
06.01.2015, 14:44
    #38849200
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните строку кода C++
denisknndata строка символов (например из 121 символа);
Неправильно. Передаётся не строка, а указатель. И не на символы, а на байты.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.01.2015, 14:46
    #38849201
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните строку кода C++
При сложении указателя на char с числом типа int происходит увеличение указателя на int * 4 байтов.

Чтобы это понять - надо признать факт того что в данном коде нет никаких строк. Есть ASCIIZ-векторы символов
которые как-бы эмулируют поведение строк. Но самих строк нет.

По смыслу данный код похож на функцию strncpy хотя точно
сказать невозможно т.к. приведён огрызок кода.

На PHP ничего приводить не нужно!

В данном форуме мы не обсуждаем вопросы PHP. Но топик по просьбе можно перебросить в под-форум PHP
и обсуждать там.
...
Рейтинг: 0 / 0
06.01.2015, 14:50
    #38849205
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните строку кода C++
denisknn,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int function(unsigned char *data, int datalen, unsigned char *out) {
	unsigned char	*position,
			*end;
	position = data;
	end = data + datalen;
	while (position < end) {
		// какой-то код
	}

а так понятней? ))
и unsigned char * - это не строка, конечно же
...
Рейтинг: 0 / 0
06.01.2015, 15:03
    #38849216
denisknn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните строку кода C++
Спасибо за ответы. Не в ту сторону я думал. Недопонимаю я пока си. Буду думать дальше.
...
Рейтинг: 0 / 0
06.01.2015, 15:11
    #38849222
denisknn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните строку кода C++
egorych, так действительно понятнее стало. Спасибо большое. Сам бы не додумался.
...
Рейтинг: 0 / 0
06.01.2015, 17:45
    #38849369
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните строку кода C++
maytonПри сложении указателя на char с числом типа int происходит увеличение указателя на int * 4 байтов.
Сразу видно - праздники удались ))
...
Рейтинг: 0 / 0
06.01.2015, 17:47
    #38849370
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните строку кода C++
char сдвигают на sizeof(int), кто-то ещё отмечает праздники :D
...
Рейтинг: 0 / 0
06.01.2015, 21:30
    #38849510
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните строку кода C++
Точно. Удались. char/int/водка/пиво. Всё смешал.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Объясните строку кода C++ / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]