如何使用int指针?

0 c++ pointers

我有两个整数指针,用于保存(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.为什么是这样?

har*_*mic 5

在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(&运算符获取它的参数的地址); 该函数可能设置变量.

不要忘记查询函数的返回值,如果出现错误,则在这种情况下不为零.