在 C++ 中,for循环通常需要三个语句,其形式为:
for (init; condition; step)
{
Loop statements
}
Run Code Online (Sandbox Code Playgroud)
我可以用两个或多个语句来代替 吗init?假设我想定义两个起始变量a和b。为此,我将使用int a = 1; int b = 5;. ;但是,由于语句之间有 a ,C++ 会将其解释int b = 5为条件语句。有没有办法将整个语句集中到 中init,也许可以使用括号?可以做类似的事情吗step?
注意:我知道我可以在调用之前初始化变量for。不过,我觉得将循环相关的语句放在循环的定义中会更符合逻辑。
以下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.它们看起来像十六进制值,表示 2686708和2686704十进制.
这提出了一些问题,您可以根据自己的喜好回答这些问题.
为什么q小于p?我希望内存按升序分配,但是q < p.
为什么地址很少改变?几个小时前我运行了一个类似的程序,我记得那个地址也是0x28fef4那个时候.
十六进制值中的一个单位代表什么?一点点?一个字节?
我有大约8 GB的内存(RAM).与我的RAM容量相比,为什么值p和q这么小?
随意回答任何或所有这些问题,或提供有关指针的任何相关信息.
谢谢.
考虑以下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?