C++ 变量和基本类型

发布于:2025-06-10 ⋅ 阅读:(24) ⋅ 点赞:(0)

1、变量的声明和定义

1.1、变量声明规定了变量的类型和名字。定义初次之外,还申请存储空间,也可能会为变量赋一个初始值。

如果想声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显式地初始化变量:

extern int i;   // 声明i而非定义i

int j;           // 声明并定义j

extern语句如果包含初始值就不再是声明,而是定义了:

extern int ss = 4;    // 定义

在函数内部,如果视图初始化一个有extern关键字标记的变量,将引发错误。

2、引用

引用为对象起了另外一个名字。

int ival = 1024;

int &refVal = ival;   // refVal指向ival(是ival的另一个名字)

int &refVal2;        // 报错:引用必须初始化

引用并非对象,相反的,它只是为一个已经存在的对象所起的另外一个名字。

int &refVal4 = 10;   // 错误,引用类型的初始值必须是一个对象;

double dval = 3.14;

int &refVal5 = dval;  // 错误,引用类型的初始值必须是int类型对象

3、指针

int ival = 42;

int *p = &ival;

利用指针访问对象

如果指针指向了一个对象,则允许使用解引用符(操作符*)来访问该对象;

cout << *p ;   // 由符号*得到指针p所指的对象,输出42

4、const限定符

const修饰的变量,其被定义为常量。

const int i = get_size();         // 正确,运行时初始化

const int j = 42;                // 正确,编译时初始化

const int k;                        //  错误,k是一个未初始化的常量

默认状态下,const对象仅在文件内有效。

如果想在多个文件之间共享const对象,必须在变量的定义之前添加extern关键字。

// file_1.cpp定义并初始化一个常量,该常量能被其他文件访问

extern const int bufferSize = fcn();

// file_1.h 头文件,与file_1.cpp中定义的bufferSize是同一个

extern const int bufferSize;

对常量的引用:

const int ci = 1024;

const int &r1 = ci;

r1 = 42;    // 错误,对常量的引用不能被修改

int &r2 = ci;   // 错误,试图让一个非常量引用指向一个常量对象

对常量的引用可能引用一个并非const的对象

int i = 42;

int &r1 = i;

const int &r2 = i;  // r2绑定对象i,但是不允许通过r2修改i的值

r1 = 0;                 // 正确 r1并非常量,i的值修改为0;

r2 = 0;                  // 错误,r2是一个常量引用