C++ Primer学习记录(3)

昨天简单谈了一点变量定义形式,以及各个部分的意义与功能,今天就接着昨天的话题继续吧。

一.关于初始化

初始化主要采用以下两种:

(1)直接初始化

(2)复制初始化

形式如下:

int a(6);     //直接初始化(推荐使用)

int b = 6;    //复制初始化

二者的功能相同,都是在定义变量时给与一个初值。而这个初值的形式可以有多种形式:

#include<iostream>

int csh()			//定义一个返回值为6的函数 
{
	return 6;
}

int main()
{
	int a(6);		//定义一个初值为6的变量a 
	
	int b=6;		//复制初始化,初值为6 
	int c(a);		//直接初始化,以a作初值,即6 
	int d=csh();	//复制初始化,以函数返回值作初值 
    int e=a+csh();  //复制初始化,以计算式结果为初值	

    return 0;
}

当我们在定义一个需要使用的变量时,最好是人为初始化,不要过分依赖编译器调用的默认构造函数,容易引起数据混乱,甚至在一些比较老的编译器中会被判作不合法。

在C++11标准中,初始化的方式还有列表初始化等。也正因为初始化的多样性,使得初始化的问题比较复杂,目前暂不作深究,待之后再细谈。

二.关于定义与声明

(1)什么是声明?

首先需要了解,C++语言支持分离式编译机制,就是将程序分为多个逻辑块编写,然后进行相对独立的编译。这个时候,分离的一部分程序若要用到其他程序的变量或函数等,则要进行声明,在声明后,则可在当前部分程序使用其它部分程序的内容。由于对象的作用域限制,跨程序声明并使用的变量必须是全局变量。

在代码量比较庞大、逻辑结构相对复杂的情况下,声明的作用将得到一定的体现。

(2)声明的形式:在主函数外进行声明:extern(关键字)数据类型 变量名

extern int a;

(3)声明与定义的区别:

#include<...>
...

int a=6;          //定义,创建int型变量a,并初始化为6
extern int b;     //声明,未创建变量
extern int c = 6; //定义,声明时不能进行初始化操作

int main()
{
    ......
}

由上方代码可推出:

定义的过程是开辟一个对应类型的的空间,将这个空间命名(变量名),并在这个空间中对变量进行操作;

而声明的过程只是借用了在其他地方创建的变量,并没有开辟空间进行操作等。一但有了实际操作(初始化等),即便有了关键词extern,这条语句也将被归属于定义。但是在定义时最好不要写extern关键字,即便编译通过,也容易引起理解混乱。

需要注意的是,变量只能定义一次,而却可以被多次声明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值