变量声明,定义,初始化

#include<iostream>
using namespace std;
int main()
{
	string a("jcnjnv");
	cout<<a;
	return 0;
} 

这样是可以的哦!

在变量定义中,当一次定义了两个或多个变量时,对象的名字随着定义也就马上可以开始使用了。

例:

double price=109.99,discount=price*0.16;
这是合法的。

在C++中初始化是一个异常复杂的问题,初始化不等于赋值,事实上在C++语言中,初始化和赋值完全是两个不同的操作。需要强调的是这个概念至关重要。

初始化不是赋值,初始化的含义是创建一个变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来替代。

初始化方法:

#include<iostream>
using namespace std;
int main()
{
	int a=2;
	int b={2};
	int c{2};
	int d(2);
	cout<<a<<endl<<b<<endl<<c<<endl<<d<<endl;
	return 0;
} 
其中int c{2};是C++11新标准,部分编译器不支持。现在无论是初始化对象还是某些时候为对象赋新值,都能由初始化表来完成。
当用于内置类型的变量时,这种初始化形式有一个特点:如果我们使用列表初始化且初始值存在丢失信息的风险,则编译器将报错:

long double ld=3.1415926536;
int a{ld}; int b={ld}; //错误:转换未执行,因为存在丢失信息的风险。 
int a(ld); int a=ld;   //正确:转换执行,且确实丢失了部分值。 

默认初始化:

如果定义变量时没有指定初值,则变量被默认初始化,默认值到底是什么由变量类型决定,同时定义变量的位置也会对此有影响。

定义于任何函数体之外的变量被初始化为0。

变量声明和定义:

为了允许程序拆分成多个逻辑部分进行编写,C++语言支持分离式编译机制,该机制允许将程序分割成若干个文件,每个文件可独立编译。

例如using namespace std;就是一个典型例子,他们定义于标准库,却能被我们写的程序使用。

为了支持分离式编译,C++语言将声明和定义分开来,声明使得名字为程序所知,而定义负责创建与名字相关联的实体。

变量声明规定了变量的类型和名字,在这一点上定义与之相同。但是除此之外,定义还申请存储空间,也可能为变量赋一个初始值,

extern int i;  //声明i 
int j         //定义j  
在函数体内部,如果试图初始化一个由extern关键字标记的变量,将引发错误。在函数体外不会出错,不过就变成了了定义了。

#include<iostream>
using namespace std;
int main(int argc,char**argv)
{
	extern int i=1;
	cout<<i;
	return 0;
} 
错误

#include<iostream>
using namespace std;
extern int i=1;
int main(int argc,char**argv)
{
	cout<<i;
	return 0;
} 
正确


-----------38----------------42


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值