Я предполагаю, что вы пытаетесь воссоздать то, что разрешено в более динамичных языках, таких как этот пример PHP:
$QueryName = "GetAirports";
$$QueryName = array(/*...*/);
Где, изменяя значение переменной $QueryName
, вы можете ссылаться на другой объект?
Если так, простой ответ: вы не можете сделать это в C.
Однако вы можете использовать одну переменную, чтобы указывать на несколько экземпляров в разное время.
Query *query_ptr = &myFirstQueryObject;
query_ptr = &mySecondQueryObject;
/* etc */
Однако из вашего примера кода видно, что вы просто хотите выделить структуру? Если так:
typedef struct Query {
/* fields here, e.g: */
int id;
int age;
} Query_t;
int main()
{
Query_t *query = malloc(sizeof(Query_t));
query->id = 1;
query->age = 0;
/* etc. */
return 0;
}
Возможно, посмотрите на структуры C и указатели.
РЕДАКТИРОВАТЬ так что из дальнейших комментариев, очевидно, вы хотите создать карту с char*
именем до Query
объекта? Для этого есть несколько подходов, но самый простой - создать два массива:
char *names[];
Query *queries[];
Пока оба массива имеют одинаковое количество элементов, а * n * th элемент в names
соответствует * n * th в queries
, вы можете перебирать names
, пока не найдете свое соответствие строка, затем используйте текущий индекс для разыменования соответствующего объекта в queries
или наоборот