Всем привет! Скинули код, который в игре подбрасывает объект. Я пытаюсь понять, как это устроено, но не понял только одну строчку: *(float*)0x009386DC += 10.0f;.
Я так и не понял, *(float*) - что это?? 0x009386DC - адрес.
Но, что блен значит *(float*)??
Zadavatel_Voprosov, Нет, формально переменной там нет. Есть просто число, записанное по указанному адресу. (float *) говорит как трактовать этот адрес, а первая звёздочка - что надо работать не с адресом, а с тем, что по этому адресу записано.
Это приведение типа с разыменованием. Любой сырой адрес рассматривается как void*, а чтобы начать с ним работать, его нужно привести, минимум, к адресу на переменную конкретного типа.
И это не объявление переменной, это просто приведение типа.
Конструкция (float*) из void* сделает float*, а звезда слева - это разыменование указателя, в результате которого получается float&. После этой легкой операции с памятью по адресу можно работать как с переменной типа float.