Здравствуйте, CaptainFlint, Вы писали:
CF>Здравствуйте, jhdffhg85hdgg5r, Вы писали:
J>>>Так что ты прибавляешь integer не к структуре, а к адресу, т.е. просто получаешь адрес, увеличенный на k размеров структуры.
J>>вот этого я и не понял J>>структуры в памяти не последовательны т.к. это не массив структур. и перед этим выделялись пo malloc(). кроме того я увеличиваю на число, а не на sizeof(tree_node*)
CF>А что и когда выделялось — это уже другой вопрос. Если не было выделено место, просто получится указатель на невыделенную область памяти. Тут уж программист должен следить за этим (собственно, отсюда и всевозможные проблемы переполнения буфера). CF>Инкремент указателя на число увеличивает его именно на указанное количество размеров структур, а не байтов. Если требуется сдвинуть именно на несколько байтов, нужно сначала привести указатель к типу void*.
Выделенное, к сожалению, неверно. Арифметика указателей с типом void* запрещена. Надо приводить к char*, который по стандарту размером в 1 байт.