我有两个整数指针,用于保存(SDL)屏幕高度和宽度的数据(以像素为单位).他们在这里宣布:
int *w = nullptr;
int *h = nullptr;
Run Code Online (Sandbox Code Playgroud)
给出这里的值:
int SDL_GetRendererOutputSize(SDL_Renderer* renderTarget, int *w, int *h);
Run Code Online (Sandbox Code Playgroud)
并在这里使用:
Dest.w = (*w / 2.0f - 58 / 2.0f, *h / 2.0f - 8 / 2.0f);
Dest.h = (*w / 2.0f - 58 / 2.0f, *h / 2.0f - 8 / 2.0f);
Dest.x = (*w / 2.0f - 58 / 2.0f, *h / 2.0f - 8 / 2.0f);
Dest.y = (*w / 2.0f - 58 / 2.0f, *h / 2.0f - 8 / 2.0f);
Run Code Online (Sandbox Code Playgroud)
但是*w和*h保持为nullptrs.为什么是这样?
在C(以及某种程度上C++)中的常见做法是,如果您正在编写一个返回多个值的函数,则调用者必须提供指向输出将放入的变量的指针.
所以,你可以像这样调用这个函数:
int w=0,h=0;
int result = SDL_GetRendererOutputSize(renderTarget, &w, &h);
if (result!=0) {
// handle an error here
}
Run Code Online (Sandbox Code Playgroud)
注意,w和h是普通的整数变量.我将这些变量的地址传递给SDL_GetRendererOutputSize(&运算符获取它的参数的地址); 该函数可能设置变量.
不要忘记查询函数的返回值,如果出现错误,则在这种情况下不为零.