Страница 2 из 2

Добавлено: 18 окт 2004, 19:34
Дрюль
Borland C++ 3.1 и ХР

Добавлено: 19 окт 2004, 11:11
Eugie

Код: Выделить всё

typedef unsigned char scrbuffer [64000]; 
scrbuffer *screen = (scrbuffer *)0xA000;
Когда пишем такое объявление, надо понимать, что scrbuffer[0] означает весь массив unsigned char scrbuffer [64000], а не первый элемент типа unsigned char. Т.е. с точки зрения последующего посимвольного доступа такое объявление смысла не имеет. Лучше делать так:

Код: Выделить всё

typedef unsigned char * TScreenBuf;
TScreenBuf sb = (TScreenBuf) 0xa000;
И ещё: прочитал в книжке Павловской, как присвоить указателю адрес памяти в явном виде. char *vp = (char *)0xB8000000 Набираю пример. Дословно. Выдаётся ошибка: cannot cast from 'unsigned long' to 'char *'. В чём косяк?
Попробуй char far *

Добавлено: 19 окт 2004, 11:48
Romeo

Код: Выделить всё

      char far *vp = (char far *)0xB8000000;
Всё прекрасно работает.