gpt4 book ai didi

c++ - C++中各种初始化程序之间的区别

转载 作者:IT老高 更新时间:2023-10-28 21:42:04 26 4
gpt4 key购买 nike

我最近才开始学习 C++ 作为我 10 年级教学大纲的一部分,并且只知道 基础知识,因此我们将不胜感激(如果可能)提供简单的答案。我对初始化和赋值感到困惑。

//Case 1
int a=5; //This is initialization
a=6; //This is assignment

据我了解,当您在声明变量时给它一个要保存的值时,它就会被初始化。稍后在代码中更改这将是一项任务。对吧?

怎么样:

//Case 2
int b;
{
//Block of code which does not call variable b
.
.
.
//End of block
}
b=6; // Is this initialization as well?

虽然在我们声明时“b”未初始化,但我们稍后会分配值“6”。我们可以说'b'现在被初始化了吗?还是已初始化和未初始化的术语不再适用于“b”?

我读到一个未初始化的变量保存“垃圾值”,直到它没有被初始化。究竟什么是“垃圾值”?

以下初始化程序有什么区别:'()'、'{}' 和 '='?

最佳答案

好的,一旦你声明了一个没有赋值的变量,比如

int b; 

这意味着编译器在内存中保留一些空间来保存值(准确地说,在这种情况下,内存保留在堆栈上)。但是由于您没有为变量分配任何值,它仍然保存着之前分配的内存空间中的值。那可以是任何东西。这些都是垃圾值。

初始化器:

int b(1);

将值 1 赋值为 (通常,它调用该类型的构造函数)

方括号可用于像这样初始化数组(编辑):

int b[] = {1, 3, 5, 7};

而 = 只是分配一个值。这个和第一个之间的区别只有在处理更复杂的类型(类)时才会变得有趣,因为你有构造函数

关于c++ - C++中各种初始化程序之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32164557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com