问题描述
我们怎么可能以指针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
。