Сообщение об ошибке

  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).

C++ сдвиг указателя на определенное количество байт

test

Для профессионалов конечно это не составляет проблем, но для новичков это может кое-что изменить:

#include "stdafx.h"
#include <iostream>

using namespace std;
//класс, который мы используем в качестве класса с данными
class t{
public:
    int data;
    int data2;
    int data3;
};
//класс, который мы используем в качестве указателя
class intp{
public:
    int pp;
};

int _tmain(int argc, _TCHAR* argv[])
{
    t dt;
    dt.data=3;
    dt.data2=5;
    dt.data3 = 10;

//кидаем указатель на 4 байта на класс размером в 12 байт(тоесть мы указатель устанавливаем на именно первых 4 байта)
    int *p = &dt.data;
    cout<<"Data0: "<<(*p)<<endl;
    cout<<"Data1: "<<(*(p+1))<<endl;
    cout<<"Data2: "<<(*(p+2))<<endl;

    intp* ip;
    ip = ((intp*)&dt);
    cout<<"1: IP->pp: "<<ip->pp<<endl;
    ip = ((intp*)&dt)+1;
    cout<<"2: IP->pp: "<<ip->pp<<endl;
    ip = ((intp*)&dt)+2;
    cout<<"3: IP->pp: "<<ip->pp<<endl;
    return 0;
}

Если мы в классе, который используем в качестве указателя изменим тип int на short int, то передвинемся таким образом:

    ip = ((intp*)&dt)+1;

мы будем на 2 байта(тип short int == 2 байта), если используем тип int - 4 байта и т.д.

Тоесть +1 у нас передвигает на 1 тип(тоесть при int, на 4 байта, при short int - на 2 байта), +2 передвигает на 1тип * 2, тоесть при int - 8 байт, при short int - 4 байта.

Дальше в таком же духе. Надеюсь данная статейка кому-нибудь поможет. =)

Категория: 

Делитесь с друзьями в социальных сетях! Оставляйте комментарии!

Share/Save

Это Вам так же может быть интересно!