В настоящее время я начинаю работать с c и allegro5. Я хочу поместить мой код инициализации в метод init(), но я пытаюсь вернуть указатели на ALLEGRO_EVENT_QUEUE и ALLEGRO_DISPLAY. Хотя указатели инициализируются в функции, они по-прежнему остаются NULL; Я думал, что значения, назначенные указателям, останутся в конце текущей области, потому что базовое значение будет изменено, но адрес памяти останется прежним. Вот мой код:C возвращающие структуры через указатель
#include <stdio.h>
#include <allegro5/allegro.h>
void init(ALLEGRO_DISPLAY *display_ptr, ALLEGRO_EVENT_QUEUE *queue_ptr) {
al_init();
al_install_keyboard();
display_ptr = al_create_display(640, 480);
queue_ptr = al_create_event_queue();
al_register_event_source(queue_ptr, al_get_display_event_source(display_ptr));
al_clear_to_color(al_map_rgb(0,0,0));
al_flip_display();
}
int main(int argc, char **argv){
ALLEGRO_DISPLAY *display = NULL;
ALLEGRO_EVENT_QUEUE *event_queue = NULL;
init(display, event_queue);
printf("%d\n", display == NULL); //prints out 1
printf("%d\n", event_queue == NULL); //prints out 1
//Further code
return 0;
}
Любой намек или помощь очень ценится.
Yay! Оно работает! Большое спасибо. –
Просто примите ответ, когда сможете. –