簡體   English   中英

如何使用int指針?

[英]How to use int pointer?

我有兩個整數指針,分別保存(SDL)屏幕的高度和寬度(以像素為單位)的數據。 在這里聲明:

int *w = nullptr;
int *h = nullptr;

給定值在這里:

    int SDL_GetRendererOutputSize(SDL_Renderer* renderTarget, int *w, int *h);

並在這里使用:

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);

但是* w* h保持為nullptrs。 為什么是這樣?

在C(以及某種程度上為C ++)中,通常的做法是,如果要編寫一個返回多個值的函數,則調用者必須提供一個指向將輸出放置到的變量的指針。

因此,您可以這樣調用此函數:

int w=0,h=0;

int result = SDL_GetRendererOutputSize(renderTarget, &w, &h);
if (result!=0) {
    // handle an error here
}

請注意,w和h是正常的整數變量。 我正在將這些變量的地址傳遞給SDL_GetRendererOutputSize&運算符采用其參數的地址); 該函數可能會設置變量。

不要忘了咨詢該函數的返回值,如果有錯誤,在這種情況下該值不為零。

我認為您需要做的是實際為高度和寬度分配兩個整數,然后將它們的地址傳遞給函數。

int w = 0, h = 0;
// Tell the function where to put the height and width by passing in the address of the two. 
// Assuming renderTarget is in scope.
SDL_GetRendererOutputSize(renderTarget, &w, &h);

當然,您必須使用它們來更改代碼。 好消息是,它將使代碼更簡單。

通過將它們設置為零,就可以聲明它們。 它告訴程序它們將保存一個整數(數字)。 自那以來? 另外,指針的作用完全像聽起來的那樣。 它指向您在(int)位置中存儲的內容。 因此,一旦為變量“ w”和“ h”輸入了一些整數,它們就會在使用指針時顯示。 指針僅告訴您選擇查看的位置中存儲了什么。 我希望這可以為您解決一切!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM