C++ 声明C+处指针的值+;
当我声明类似于C++ 声明C+处指针的值+;,c++,pointers,C++,Pointers,当我声明类似于 int *i = new int; 它(由编译器)初始化为什么值。如果我想确定它是零,我必须使用 int *i = new int(0); new会将所有内容初始化为零吗 在同一主题上,编译器将初始化什么,用户必须初始化什么(当涉及指针时)。这两个声明 int *i = new int; int *i = new int(0); 两者在动态分配内存(在堆中)的意义上是等价的。因此这两个指针都将被初始化。但是,在第一种情况下,内存本身没有初始化,并且具有一些任意值,而在第二
int *i = new int;
它(由编译器)初始化为什么值。如果我想确定它是零,我必须使用
int *i = new int(0);
new会将所有内容初始化为零吗
在同一主题上,编译器将初始化什么,用户必须初始化什么(当涉及指针时)。这两个声明
int *i = new int;
int *i = new int(0);
两者在动态分配内存(在堆中)的意义上是等价的。因此这两个指针都将被初始化。但是,在第一种情况下,内存本身没有初始化,并且具有一些任意值,而在第二种情况下,内存(即分配的int类型的对象)由0初始化。
int*i=new int()
会将动态分配的int
初始化为零。首先:为什么要这样做而不是inti=0代码>?int*i=新的int
不初始化由i
@πάντα指向的对象ῥεῖ 我相信这只是一个例子。@πάνταῥεῖ int
未初始化为零,即点。您需要int*i=newint()正如我在第一篇评论中所说的那样,代码>更喜欢“动态分配内存”而不是“在堆上分配”。无论分配发生在“堆上”还是“堆栈上”或其他任何地方,都是一个不确定且完全无关的实现细节。重要的是程序的抽象语义和相应的行为和/或正确性。@user3477950我更新了我的帖子。