Я знаю, что это довольно бестолковый вопрос, но, похоже, не работает ни гугл, ни перестановки кода.
У меня есть структура, которая определяется следующим образом.
typedef struct
{
int rate;
int duration;
} DummyStructure;
Теперь я пытаюсь использовать код, подобный этому.
//
DummyStructure* structure;
DummyStructure* structure2;
long int point;
//
structure = (DummyStructure*)malloc(sizeof(DummyStructure));
structure->rate = 19;
structure->duration = 92;
point = (long int)&structure;
// now i'd like to set structure2 to the same memory location as 1.
// point is the 8-byte int location (i assume?) of structure.
// so naturally i'd assume that by casting as a DummyStructure pointer
// that long int would act as a pointer to that 1.
// It doesn't.
structure2 = (DummyStructure*)point;
Я подчеркиваю, что я пробовал каждую перестановку ** и *, которая возможна.Я просто не понимаюЛибо это не компилируется, либо происходит, и когда это происходит, я получаю, казалось бы, случайные числа для полей, содержащихся в Structure2.Я предполагаю, что каким-то образом я получаю неправильное расположение в памяти, но как еще вы можете получить его, кроме как с помощью &?
У меня есть расположение в памяти, верно?Как установить структуру в это место?
РЕДАКТИРОВАТЬ;Я забыл упомянуть (и последующие ответы спросили), но я собираюсь использовать это, чтобы обернуть libvorbis для jni.Использование jni означает, что я не могу отменить ни одну из структур, которые выполняет libvorbis, но она требует их для своих основных функций.Поэтому моя обертка будет использовать vorbis напрямую для создания структур, и я возвращаю java указатель на них, чтобы, когда мне нужно было заполнить буфер большим количеством звука, я мог просто повторно ссылаться на объекты struct из целочисленного значения.указателя.