Функция, которая принимает буфер памяти( Непойму условие%( )

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by WON, 8 Mar 2009.

  1. WON

    WON New Member

    Joined:
    2 Jul 2008
    Messages:
    17
    Likes Received:
    2
    Reputations:
    0
    Задача:
    Code:
    Здесь была задача...
    Задачу решать не надо, только обьясните пожалуйста условие и если будут попутные вопросы ответе.
     
    #1 WON, 8 Mar 2009
    Last edited: 15 Mar 2009
  2. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    4ето типа такого имхо
    ...
    type
    TLol = record
    field1: byte;
    field2: byte;
    field3: byte;
    field4: byte;
    field5: byte;
    field6: byte;
    end;

    function myfunc(struct: ^TLol): byte;
    begin
    result := struct.field6;
    end;

    var
    lol : ^TLol;
    rez: byte;
    begin
    rez := myfunc(lol);
    writeln('rezult = ', rez);
    end;
     
  3. WON

    WON New Member

    Joined:
    2 Jul 2008
    Messages:
    17
    Likes Received:
    2
    Reputations:
    0
    Как на С/С++ изменить значение адреса. Конкретнее на примере:
    получаю адресс 0x0013FF78 и мне надо изменить а точнее прибавить к текущему значению 4 байта.. как это зделать?
     
  4. St0nX

    St0nX Elder - Старейшина

    Joined:
    19 May 2007
    Messages:
    257
    Likes Received:
    46
    Reputations:
    0
    Если я все правильно понял то тебе нудно просто просто прибавить к текущему адресу еще 4 байта и все
    Code:
    mov eax,0013FF78h
    add eax,4h
    на сях как то так.
    Code:
    char *a;
    a = (char *)(0x0013FF78+0x4);
     
  5. WON

    WON New Member

    Joined:
    2 Jul 2008
    Messages:
    17
    Likes Received:
    2
    Reputations:
    0
    Если начальный адрес храниться в переменной, а полученный адрес надо занести в указатель типа long то как будет этот код выглядить?

    Code:
    void f(void *v)
    {
    	long *p= (v+0x5);
    	cout<<v<<" + 5 = "<<p<<endl;
    };
    а так оно не хочет работать :(... Говорит что неизвестен размер void *.
     
  6. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    Имхо, вам сюда надо было
    https://forum.antichat.ru/thread40894.html

    а вообще

    Code:
    long *p= (long *)((char *)v+0x5);
    
     
    1 person likes this.
  7. WON

    WON New Member

    Joined:
    2 Jul 2008
    Messages:
    17
    Likes Received:
    2
    Reputations:
    0
    Спасибо... Тему можно закрывать...