小编Joh*_*han的帖子

我可以在“for”循环中有两个初始化语句吗?

在 C++ 中,for循环通常需要三个语句,其形式为:

for (init; condition; step)
{
Loop statements
}
Run Code Online (Sandbox Code Playgroud)

我可以用两个或多个语句来代替 吗init?假设我想定义两个起始变量ab。为此,我将使用int a = 1; int b = 5;. ;但是,由于语句之间有 a ,C++ 会将其解释int b = 5为条件语句。有没有办法将整个语句集中到 中init,也许可以使用括号?可以做类似的事情吗step

注意:我知道我可以在调用之前初始化变量for。不过,我觉得将循环相关的语句放在循环的定义中会更符合逻辑。

c++ for-loop statements

2
推荐指数
1
解决办法
1万
查看次数

C++地址十六进制代表什么?

以下main()是我尝试解码指针值的重要性之一:

int main(){
    int a = 15, b = 27;
    int *p = &a, *q = &b;
    cout << p << ',' << q;
}
Run Code Online (Sandbox Code Playgroud)

打印的两个值是十六进制,即p = 0x28fef4, q = 0x28fef0.它们看起来像十六进制值,表示 26867082686704十进制.

这提出了一些问题,您可以根据自己的喜好回答这些问题.

  1. 为什么q小于p?我希望内存按升序分配,但是q < p.

  2. 为什么地址很少改变?几个小时前我运行了一个类似的程序,我记得那个地址也是0x28fef4那个时候.

  3. 十六进制值中的一个单位代表什么?一点点?一个字节?

  4. 我有大约8 GB的内存(RAM).与我的RAM容量相比,为什么值pq这么小?

随意回答任何或所有这些问题,或提供有关指针的任何相关信息.

谢谢.

c++ memory pointers

-1
推荐指数
1
解决办法
791
查看次数

返回语句后函数能否继续?

考虑以下C++函数:

SDL_Surface* loadBMP(std::string path, SDL_Surface* loadedBMP){
    //Load bitmap
    SDL_Surface* loadedBMP = SDL_LoadBMP(path);
    if (loadedBMP == NULL){
        printf("Unable to load image %s! SDL Error: %s\n", path.c_str(), SDL_GetError());
    }

    return loadedBMP;

    //Magic
    SDL_FreeSurface(loadedBMP);
}
Run Code Online (Sandbox Code Playgroud)

现在,为了这个问题,假设这loadedBMP是一个先前声明的全局变量.

这是我的问题:有没有办法让函数在return语句后继续运行?在这个功能而言,是有办法有最后的线,SDL_FreeSurface(loadedBMP)之后运行return荷兰国际集团loadedBMP

c++ sdl return function

-1
推荐指数
2
解决办法
4762
查看次数

标签 统计

c++ ×3

for-loop ×1

function ×1

memory ×1

pointers ×1

return ×1

sdl ×1

statements ×1