Цитата(GIK @ 5.1.2007, 19:19 ) | | Меня интересует адресная арифметика жесткого диска. |
Что есть "адресная арифметика жесткого диска" в твоем понимании?
Цитата(GIK @ 5.1.2007, 19:19 ) | | Долго думал, почему в книгах по С++ нет информации |
Ответ очевиден: потому что книги по C++. Каким образом язык C++ связан с жесткими дисками и файловыми системами? Язык это язык. Жесткий диск это жесткий диск. Файловая система эта файловая система.
Цитата(GIK @ 5.1.2007, 19:19 ) | | решил освоить винду, купил книгу, но пока ничего не нашел... |
Какую книгу, и что именно ты хочешь в ней найти?..
Цитата(GIK @ 5.1.2007, 19:19 ) | | Почемуто разница между адресами файлов = 24, если даже в файле инфы больше, и почему то при увеличении указателя, тоже происходит увеличение на 24. |
Между какими адресами файлов?.. Ты понимаешь, что такое "FILE", что такое "FILE *f[3];"? Тебе не книжка по "адресной арифметике жесткого диска" нужна, а букварь по C++, а, вернее, C...
FILE - это структура. Ни больше ни меньше. Вот, например, как она определена в файле stdio.h среды программирования Borland C++ Builder:
| Код | /* Definition of the control structure for streams */ typedef struct { unsigned char *curp; /* Current active pointer */ unsigned char *buffer; /* Data transfer buffer */ int level; /* fill/empty level of buffer */ int bsize; /* Buffer size */ unsigned short istemp; /* Temporary file indicator */ unsigned short flags; /* File status flags */ wchar_t hold; /* Ungetc char if no buffer */ char fd; /* File descriptor */ unsigned char token; /* Used for validity checking */ } FILE; /* This is the FILE object */
|
Функция fopen возвращает указатель на экземпляр этой структуры, который в дальнейшем используется функциями типа fclose, fseek, fread, fwrite, fprintf и т.д. Этот указатель ссылается на адрес в оперативной памяти, а вовсе не на какой-то там адрес на поверхности жесткого диска!..
А "FILE *f[3];" - это массив из 3 указателей на структуры типа FILE. Что касается твоего недоумения, откуда берется число 24... это всего-навсего размер памяти в байтах, занимаемый одной такой структурой. Можешь выполнить программу:| Код | #include <stdio.h> #include <conio.h>
int main() { printf("%d",sizeof(FILE)); getch(); return 0; } |
На экран будет выведено число "24". |