问题描述
- 关于初始化的问题,求解答
-
1:int a=10; 2: int a; a=10;
上面两个都是初始化吗?
初始化是对变量第一次赋值就叫初始化,还是说在定义变量的同时赋值才叫初始化?
求解答
解决方案
两段代码产生的机器码是一样的,它们等价。
在C语言中,
int a;就已经分配了空间
a = 1;这个赋了一个值
很多书上说叫做“赋初值”,其实对于非常数,编译器不管什么初不初的。
int a = 1;就是把这两步在一句话中写完了。
解决方案二:
初始化和变量声明是明显有区别的,而且初始化先于变量声明进行
解决方案三:
int a;是声明,但是a=10;是赋值吧,初始化我也不太明白诶,刚看了下,变量的初始化是在编译的时候机器初始化的吧,我们做的只是声明下而已
解决方案四:
int a;声明整型变量 a; 这是变量声明(这种声明有可能转化为定义,但是不是确切的定义,要跟上下文关联才能看出来)
int a =10;声明整型变量 a并初始化为 10;这是变量定义。这里的 a =10;是初始化
int a;a =10 ; 这是两个语句,前一个是声明,后一个是赋值,这里的 a =10;不是通常意义的初始化。
C语言:
初始化有两个含义,一个是给变量一个最初的值,可能在变量声明以后,这通常跟编译器出错信息相关
一个是变量声明时,给变量一个值,这是变量定义时候的初始化
当,一个变量,既没有在定义时候的初始化,也没有赋值语句(以及输入语句),给变量 一个值,
通常编译器会输出警告信息,某变量没有 初始化_
C++ :
类构造函数有个初始化表,可以在那里写代码初始化成员变量。
其他时候,和C一样
从语言角度来数,C,C++ 定义的时候初始化数据,称为初始化
C++构造函数的初始化表,会在构造对象的时候调用(即对象定义的时候调用),
用于初始化 类的成员变量以及基类子对象。
而 = 是赋值号; a =b 这样的表达式称为赋值表达式。
a=b;
这样一个由赋值表达式构成的语句称为赋值语句,
从语言来说,这只是赋值,不是初始化