(long)wdst+=offset; //ошибка

программирование с++ массивы типы указатели

char dst[1024];
unsigned long *wdst = (unsigned long*)dst;

как переместить указатель на один байт дальше? это возможно?

(char*)wdst+=1; //возвращает ошибку: error C2106: '+=' : left operand must be l-value

Примечание:
извиняюсь за кривой заголовок поста :)

верно только то что в тексте вопроса написал.

Примечание:
!!!!!!!!!!!!!ВОПРОС РЕШЕН!!!!!!!!!!!!!!!!



другой вопрос!!!

char *str;
if(str!=NULL)delete[] str; //такой код выделяет ошибку, так как str не возвращает нул, как и *NULL. так как проверить если не проверять и удалять то также вызывает ошибку.

в студии в отладчике:
str 0xcccccccc <bad> str*

потому сделал так:
if((int)str!=0xcccccccc) delete[] str;

правильно ли?

Примечание:
lleo
*wdst должен быть типа - unsigned long*

вопрос решился так:
wdst=(unsigned long*)(dst+offset);

Примечание:
.
.
.
ДЛЯ srs2k
это функция копирования из одного char* в другую область char* с определенным смещением.
для увеличения скорости данные представляется в типе long чтобы за один цикл копировать сразу 4 или 8 байт.

Примечание:
.
.
.
.
ДЛЯ srs2k
не катит memcpy :) потому что я его реализую сам, вообще все сам пишу по возможности на наиболее низком уровне доступном на с++
да и нужно расширять функции часто, а зачем пользовать одну и ворую аналог первой только расширенный? сразу пользовать везде только вторую. в случае с memcpy есть параметр с которого байта записывать в dst, возможно будет еще количество или до какого надо записать..
и вообще я велосипедист +)

Примечание:
.
.
.
ДЛЯ crimaniak
Это "обычно" обычно у всех разное :)
Ответы:
char dst[1024];
char *wdst = (char*)dst;
wdst++;
Зачем объявлять указатель long*, если потом присваиваешь ему char* ?
Используйте memcpy()
Попытки оптимизации, подобные твоим, обычно приводят к падению производительности и массе глюков. Не делай этого. Возьми свою "оптимизированную" версию memcpy и протестируй на скорость по сравнению со стандартной - результат, скорее всего, будет неожиданным.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.