SDL2 指针 c 和 c++

SDL2 Pointers c and c++

我们怎么可能将某些函数存储在指针中,例如 win = SDL_CreateWindow("Hello World", posX, posY, width, height, 0); ?如果它不是一个函数那么它是什么因为它看起来像一个函数。其次,这些是什么类型的指针是指向成员函数的指针?我的意思是 SDL_Window *win; SDL_Renderer *renderer;。我怎么可能不带任何符号就这样声明呢? 你能给我发伪代码来理解这个指针如何保持这个“功能”吗?

include "SDL.h"

int main(int argc, char *argv[])
{
    int posX = 100, posY = 100, width = 320, height = 240;
    SDL_Window *win;
    SDL_Renderer *renderer;
    win = SDL_CreateWindow("Hello World", posX, posY, width, height, 0);
    renderer = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED);
    return 0;
}

实际上 win 不是指向函数的指针,而是指向结构类型的指针 SDL_Window。语句 win = SDL_CreateWindow("Hello World", posX, posY, width, height, 0) 意味着您调用函数 SDL_CreateWindow 并带有参数 ("Hello World", posX, posY, width, height, 0) 此函数作为参数使用的结果 returns 在此函数结构中动态分配的指针 SDL_Window.

函数指针可以用以下结构声明:

SDL_Window * (*functionName)(const char*, int, int, int, int, int) = SDL_CreateWindow;

比那样使用:

win = functionName("Hello World", posX, posY, width, height, 0);

functionName 在这种情况下指向 SDL_CreateWindow 函数并用于调用 SDL_CreateWindow.