SDL2指针c和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",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",0),该函数作为所使用参数的结果返回了在该函数结构SDL_Window内部动态分配的指针。>

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

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

比那样使用:

win = functionName("Hello World",0);

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...