Объясните строку кода C++

denisknn
Дата: 06.01.2015 14:28:29
Функции передаются параметры:
data строка символов (например из 121 символа);
datalen длина этой строки (121).
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.
Dimitry Sibiryakov
Дата: 06.01.2015 14:44:17

denisknn
data строка символов (например из 121 символа);

Неправильно. Передаётся не строка, а указатель. И не на символы, а на байты.

Posted via ActualForum NNTP Server 1.5

mayton
Дата: 06.01.2015 14:46:44
При сложении указателя на char с числом типа int происходит увеличение указателя на int * 4 байтов.

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

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

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

В данном форуме мы не обсуждаем вопросы PHP. Но топик по просьбе можно перебросить в под-форум PHP
и обсуждать там.
egorych
Дата: 06.01.2015 14:50:01
denisknn,
int function(unsigned char *data, int datalen, unsigned char *out) {
	unsigned char	*position,
			*end;
	position = data;
	end = data + datalen;
	while (position < end) {
		// какой-то код
	}
а так понятней? ))
и unsigned char * - это не строка, конечно же
denisknn
Дата: 06.01.2015 15:03:04
Спасибо за ответы. Не в ту сторону я думал. Недопонимаю я пока си. Буду думать дальше.
denisknn
Дата: 06.01.2015 15:11:39
egorych, так действительно понятнее стало. Спасибо большое. Сам бы не додумался.
Anatoly Moskovsky
Дата: 06.01.2015 17:45:25
mayton
При сложении указателя на char с числом типа int происходит увеличение указателя на int * 4 байтов.

Сразу видно - праздники удались ))
SashaMercury
Дата: 06.01.2015 17:47:40
char сдвигают на sizeof(int), кто-то ещё отмечает праздники :D
mayton
Дата: 06.01.2015 21:30:26
Точно. Удались. char/int/водка/пиво. Всё смешал.