所在的位置: C++ >> C++前景 >> C编程变量与常量

C编程变量与常量

北京白癜风专科医院那里最好 https://jbk.39.net/yiyuanzaixian/bjzkbdfyy/nxbdf/

一段程序的核心有两个方面:一个是要处理的信息,另一个就是处理的计算流程。计算机所处理的信息一般叫做“数据”(data)。

对计算机来说,需要明确地知道把数据存放在哪里、以及需要多大的存储空间。在机器语言和汇编语言中,我们可能需要充分了解计算机底层的存储空间,这非常麻烦;而在C++程序中,我们可以通过“声明变量”的方式来实现这些。

变量和常量

为了区分不同的数据,在程序中一般会给它们起个唯一的名字,这就是所谓的“变量”。在C++中,“变量”其实就是记录了计算机内存中的一个位置标签,可以表示存放的数据对象。

1.变量的声明和赋值

想要使用变量,必须先做“声明”,也就是告诉计算机要用到的数据叫什么名字,同时还要指明保存数据所需要的空间大小。比如:

inta;

这里包含两个信息:一个是变量的名字,叫做“a”,它对应着计算机内存中的一个位置;另一个是变量占据的空间大小,这是通过前面的“int”来指明的,表示我们需要足够的空间来存放一个“整数类型”(integer)数据。

所以变量声明的标准语法可以写成:

数据类型变量名;

变量名也可以有多个,用逗号分隔就可以。

在C++中,可以处理各种不同类型的数据,这里的int就是最基本的一种“数据类型”(datatype),表示一般的整数。

当然,如果我们直接在代码中声明一个变量,然后打印输出的话就会报错,因为这个变量没有被“初始化”。也就是说,a这个变量现在可以表示内存中一个位置了,但是里面的数据是什么?这就需要让a有一个“初始值”:

inta=1;

这个操作叫做“赋值”。需要说明的是,这里等号“=”表示的是赋值操作,并不是数学上的“等于”。换句话说,我们还可以继续给a赋别的值:

inta=1;

a=2;

现在a的值就是2了。a的值可以改变,所以它叫做“变量”。

扩展知识:

C++是一种静态类型(staticallytyped)语言,需要在编译阶段做类型检查(typechecking)。也就是说所有变量在创建的时候必须指明类型,而且之后不能更改。对于复杂的大型程序来说,这种方式更有助于提前发现问题、提高运行效率。

代码如下:

#includeiostream

usingnamespacestd;

intmain()

{

inta=1;

cout"a="aendl;

a=2;

cout"现在a="aendl;

cin.get();

}

要运行的话,可以右键项目名-设为启动项目,或者右键解决方案-设置启动项目。

注意,如果不给初始值,后面再赋值、再使用也是合法的;但一般不能不赋值、直接使用。因为在函数中定义的变量不被初始化,而在函数外部定义的变量会被默认初始化为0值。

2.标识符

每个变量都有一个名字,就是所谓的“变量名”。在C++中,变量、函数、类都可以有自己专门的名字,这些名字被叫做“标识符”。

标识符由字母、数字和下划线组成;不能以数字开头;标识符是大小写敏感的,长度不限。

所以下面的变量名都是合法而且不同的:

intb,B,B2,a1_B2;

此外,C++中还对变量命名有一些要求和约定俗成的规范:

l不能使用C++关键字;

l不能用连续两个下划线开头,也不能以下划线加大写字母开头,这些被C++保留给标准库使用;

l函数体外的标识符,不能以下划线开头;

l要尽量有实际意义(不要定义a、b,而要定义name、age);

l变量名一般使用小写字母;

l自定义类名一般以大写字母开头;

l如果包含多个单词,一般用下划线分隔,或者将后面的单词首字母大写;

所谓的“关键字”,就是C++保留的一些单词,供语言本身的语法使用。包括:

以及C++中使用的一些运算操作符的替代名:

3.作用域

变量有了名字,那只要用这个名字就可以指代对应的数据。但是如果出现“重名”怎么办呢?

在C++中,有“作用域”(scope)的概念,就是指程序中的某一段、某一部分。一般作用域都是以花括号{}作为分隔的,就像之前我们看到的函数体那样。

同一个名字在不同的作用域中,可以指代不同的实体(变量、函数、类等等)。

定义在所有花括号外的名字具有“全局作用域”(globalscope),而在某个花括号内定义的名字具有“块作用域”。一般把具有全局作用域的变量叫做“全局变量”,具有块作用域的变量叫做“局部变量”。

测试代码如下:

#includeiostream

usingnamespacestd;

//全局作用域,全局变量

intnumber=0;

intmain()

{

//块作用域,局部变量

intnumber=1;

//访问局部变量

cout"number="numberendl;

//访问全局变量

cout"number="::numberendl;

cin.get();

}

如果在嵌套作用域里出现重名,一般范围更小的局部变量会覆盖全局变量。如果要特意访问全局变量,需要加上双冒号::,指明是默认命名空间。

4.常量

用变量可以灵活地保存数据、访问数据。不过有的时候,我们希望保存的数据不能更改,这种特殊的变量就被叫做“常量”。在C++中,有两种方式可以定义常量:

(1)使用符号常量

这种方式是在文件头用#define来定义常量,也叫作“宏定义”。

#defineZERO0

跟#include一样,井号“#”开头的语句都是“预处理语句”,在编译之前,预处理器会查找程序中所有的“ZERO”,并把它替换成0。这种宏定义的方式是保留的C语言特性,在C++中一般不推荐。

(2)使用const限定符

这种方式跟定义一个变量是一样的,只需要在变量的数据类型前再加上一个const关键字,这被称为“限定符”。

//定义常量

constintZero=0;

//不能修改常量值

//Zero=10;

const修饰的对象一旦创建就不能改变,所以必须初始化。

跟使用#define定义宏常量相比,const定义的常量有详细的数据类型,而且会在编译阶段进行安全检查,在运行时才完成替换,所以会更加安全和方便。




转载请注明:http://www.aierlanlan.com/cyrz/6193.html