Я хочу сделать что-то вроде этого:
void* ptr = some_function(&ptr);
Это законно в C?
Да, это абсолютно законно. Помните, что ваша функция some_function должна иметь эту подпись:
void* some_function(void** param)
Да. Это правильно.
У вас есть особая проблема?
Это четко определено. То, что не будет четко определено, будет разыменовывать указатель в some_function.
some_function