int main()
{
int *y = new int(5);
cout << "y = " << y << " &y = " << &y << " *y = " << *y << endl;
int *p = new int[5];
cout << "p = " << p << " &p = " << &p << " *p =" << *p << endl;
}
一个用过[]而另一个用过(),有什么不同以及它是如何工作的?有人可以帮我解释一下吗?谢谢!
答案 0 :(得分:0)
您在std::cout
中输出了很多内容,但大多数内容并不重要。
试
std::cout << sizeof(int(5)) << " " << sizeof(int[5]) << "\n";
将输出
4 20
因为int(5)
表示用5初始化的单个整数。因此sizeof
会产生int
的大小。
另一方面,int[5]
是您所期望的:一个包含5个整数的数组,因此sizeof
会产生5*sizeof(int)
。
还有两个评论:
new
创建好的旧数组绝对是初学者应该避免的。如果您需要动态调整大小的可索引存储空间,请使用std::vector
。没有速度的消息。using namespace std;
只需输入std::
,这样可以使代码更具可读性,并清楚地将您的内容与库内容分开。答案 1 :(得分:0)
int *y = new int(5)
这会分配一个int
并将其值设置为5,然后指定y
指向已分配的int
。
int *p = new int[5]
这将分配一个5 int
s的数组,其值最初未定义,然后指定p
指向分配的数组中的第一个int
。