Определение константы MAX для char как 255

290
05 января 2017, 06:39

много где замечал, что размер символьного буфера определяется так:

const int bufferSize = 255;  
char buffer[bufferSize+1];

зачем прибавлять единицу? ведь char может хранить 256 значений, почему сразу не определить так:

const int bufferSize = 256;  
char buffer[bufferSize];

тоже самое для символьного массива:

const int MAX = 256;  
char array[MAX];
Answer 1

ведь char может хранить 256 значений, почему сразу не определить так:

Размер char не имеет никакого отношения к размеру выделяемого буфера - хоть мегабайт :)

Выделяется так для удобства, если вы выделяете bufSize+1 байт - то можете хранить в нем строку в bufSize символов (еще один - для завершающего нулевого символа).

Что касается конкретно 255 - то, как мне кажется, причины тут скорее психологические - типа, круглое (в смысле бинарном :)) число, плюс обычно именно такой размер не может превышать имя файла (например, _MAX_FNAME в Windows).

READ ALSO
Алгоритм получения изменений в файле

Алгоритм получения изменений в файле

Нужно с определённой периодичностью проверять изменения в файле и если файл был изменён, то программе нужно считать только это изменение

406
Проблема с курсором мыши

Проблема с курсором мыши

Столкнулся с такой проблемой: Есть окно QMdiSubWindow с понавешанными на него виджетамиПри перемещении курсора к любому краю внутреннего окна,...

309
Установление опций QSerialPort аналогичный boost::asio::serial_port::set_option();

Установление опций QSerialPort аналогичный boost::asio::serial_port::set_option();

Хочу портировать некий проект, работающий с ком-портом, написанный в boost'e на Qt

340