一个不同的基本问题,请原谅我的无知。请让我知道C ++中的简单变量声明是否适用于普通(自动非静态和非全局)变量.... 浮动x;在函数范围内,比如说main()使用堆栈或堆(免费存储)内存吗? 我问这个是因为下面给出的代码在C ++中工作,但不在C中。 提前谢谢。
#include <iostream>
using namespace std;
int main()
{
int a,b;
cin >> a >> b;
if(a < b)
{
int c = 1925;
float d = 0.7;
}
else
{
double e = 889.7;
short f = 35;
}
return 0;
}
答案 0 :(得分:2)
这些变量将在堆栈上创建,并在离开其包含范围时被销毁。例如,当if语句终止时,c和d将不再可用,因为当它们击中第一个右括号“}”时它们将超出范围。
这在C ++中起作用的原因,而不是C,与堆栈与堆分配无关。 “using namespace std”和你已经#included的iostream.h文件只存在于C ++标准模板库中!请参阅http://www.cplusplus.com/reference/以查看C与C ++中可用的内容。
当您使用new运算符时,堆分配有效,该运算符返回指向堆上新分配的对象的指针,并且在您在指针上显式调用delete之前不会销毁它。
答案 1 :(得分:0)
以您描述的方式声明的变量存储在堆栈中。
有关详细信息,请参阅此回复:What and where are the stack and heap?