变量提供一个具名的、可供程序操作的存储空间。c++中的每个变量都有其数据类型,数据类型决定着变量所占空间的大小和布局方式、该空间能存储的范围,以及变量能参与的运算。对c++程序员来说,“变量(variable)"和”对象(objec)“一般可互换使用。
变量定义:变量定义的基本形式是类型说明符,随后紧跟由一个或多个变量名组成的列表,其中变量名以逗号分隔以分号结束。
int a=0,b=10;
string a="dadadad";
当对象在创建的时候获得了一个特定的值,我们说这个对象被初始化了,对象的名字随着定义也就马上可以使用了,因此在同一条定义语句中可以用先定义的变量值去初始化后定义的其他变量。
double price=199,discount=price*0.8;
注意:初始化并不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除掉,而以一个新值来替代。
默认初始化:如果定义变量时没有指定初值,则变量被默认初始化,此时变量被赋予了“默认值”。默认值到底是什么由变量类型决定,同时定义变量的位置也会对此有影响。如果是内置类型(及int,char等非自定义类型)的变量未被显式初始化,它的值由定义的位置决定。定义于任何函数体之外的变量被初始化为0。一种列外的情况是,定义在函数体内部的内置类型变量将不被初始化。一个未被初始化的内置类型变量的值是未定义的,如果试图拷贝或以其他形式访问此类值,将发生错误。
每个类各自决定其初始化对象的方式。而且,是否允许不经初始化就定义对象也由此类自己决定。如果此类允许这种行为,它将决定对象的初始值到底是什么。
绝大多数类都支持无须显式初始化而定义对象,这样的类提供了一个合适的默认值。例如,string类规定如果没用指定初值则生成一个空串:
std::string empty;//及empty为非显式地初始化为一个空串
一些类要求每个对象都显式初始化,此时如果创建一个该类的对象而未初始化,将引发错误。
NOTE:定义于函数体内的内置类型的对象如果没有初始化,则其值未定义。类的对象如果没有显式地初始化,则其值由该类确定。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步