我最近才开始学习C++作为我的10年级课程大纲的一部分,我只知道基础知识,因此简单的答案(如果可能的话)将不胜感激.我在初始化和赋值之间比较困惑.
//Case 1
int a=5; //This is initialization
a=6; //This is assignment
Run Code Online (Sandbox Code Playgroud)
根据我的理解,当你在声明变量时给它一个值来初始化变量.稍后在代码中更改此内容将是一项任务.对?
关于什么 :
//Case 2
int b;
{
//Block of code which does not call variable b
.
.
.
//End of block
}
b=6; // Is this initialization as well?
Run Code Online (Sandbox Code Playgroud)
虽然'b'在我们声明时未初始化,但我们稍后会赋值'6'.我们可以说'b'现在已经初始化了吗?或者初始化和未初始化的术语是否不再适用于'b'?
我读了一个未初始化的变量保存"垃圾值",直到它没有初始化.什么是"垃圾价值"?
以下初始化程序之间有什么区别:'()','{}'和'='?
Pet*_*erO 10
好的,一旦你声明一个变量而没有分配任何值,比如
int b;
Run Code Online (Sandbox Code Playgroud)
这意味着编译器在内存中保留一些空间来保存值(确切地说,在这种情况下,内存在堆栈上保留).但是,由于您没有为变量赋值,它仍保留值,即之前在内存中分配的空间.这可以是任何事情.那些是垃圾值.
初始化:
int b(1);
Run Code Online (Sandbox Code Playgroud)
将值1赋值为(通常,它调用该类型的构造函数)
括号可用于初始化这样的数组(编辑):
int b[] = {1, 3, 5, 7};
Run Code Online (Sandbox Code Playgroud)
并且=只是分配一个值.在处理具有构造函数的更复杂类型(类)时,这与第一个之间的区别只会变得有趣
易说:
取消初始化变量:
int a;
Run Code Online (Sandbox Code Playgroud)
您声明一个变量,表示您分配内存但不为其分配值.所以如果值设置为0,它的编译器就会依赖它.所以可能有任何东西.多数民众国人,你称之为垃圾价值.
初始化变量:
int a = 0;
Run Code Online (Sandbox Code Playgroud)
您声明一个变量,表示您分配内存并为其分配值.
Assigne价值观:
a = 10;
Run Code Online (Sandbox Code Playgroud)
您将右值(在本例中为10)赋予左值(a).所以你不要分配新的内存.