C++ 基础

C++ 主页 C++ 概述 C++ 环境设置 C++ 基本语法 C++ 注释 C++ Hello World C++ 省略命名空间 C++ 标记 C++ 常量/字面量 C++ 关键字 C++ 标识符 C++ 数据类型 C++ 数字数据类型 C++ 字符数据类型 C++ 布尔数据类型 C++ 变量类型 C++ 变量作用域 C++ 多变量 C++ 基本输入/输出 C++ 修饰符类型 C++ 存储类 C++ 数字 C++ 枚举 C++ 枚举类 C++ 引用 C++ 日期和时间

C++ 运算符

C++ 运算符 C++ 算术运算符 C++ 关系运算符 C++ 逻辑运算符 C++ 位运算符 C++ 赋值运算符 C++ sizeof 运算符 C++ 条件运算符 C++ 逗号运算符 C++ 成员运算符 C++ 强制类型转换运算符 C++ 指针运算符 C++ 运算符优先级 C++ 一元运算符

C++ 控制语句

C++ 决策语句 C++ if 语句 C++ if else 语句 C++ 嵌套 if 语句 C++ switch 语句 C++ 嵌套 switch语句 C++ 循环类型 C++ while 循环 C++ for 循环 C++ do while 循环 C++ Foreach 循环 C++ 嵌套循环 C++ break 语句 C++ continue 语句 C++ goto 语句

C++ 字符串

C++ 字符串 C++ 循环遍历字符串 C++ 字符串长度 C++ 字符串连接 C++ 字符串比较

C++ 函数

C++ 函数 C++ 多函数参数 C++ 递归函数 C++ 返回值 C++ 函数重载 C++ 函数重写 C++ 默认参数

C++ 数组

C++ 数组 C++ 多维数组 C++ 指向数组的指针 C++ 将数组传递给函数 C++ 从函数返回数组

C++ 结构 &联合

C++ 结构 C++ 联合

C++ 指针

C++ 指针 C++ 解引用 C++ 修改指针

C++ 类和对象

C++ 面向对象 C++ 类 &对象 C++ 类成员函数 C++ 类访问修饰符 C++ 静态类成员 C++ 静态数据成员 C++ 静态成员函数 C++ 内联函数 C++ this 指针 C++ 友元函数 C++ 指向类的指针

C++ 构造函数

C++ 构造函数 &析构函数 C++ 默认构造函数 C++ 参数化构造函数 C++ 复制构造函数 C++ 构造函数重载 C++ 带默认参数的构造函数 C++ 委托构造函数 C++ 构造函数初始化列表 C++ 使用构造函数动态初始化

C++ 继承

C++ 继承 C++ 多重继承 C++ 多级继承

C++ 面向对象

C++ 重载 C++ 多态性 C++ 抽象 C++ 封装 C++ 接口 C++ 虚函数 C++ 纯虚函数与抽象类

C++ 文件处理

C++ 文件和流 C++ 文件读取

C++ 进阶

C++ 异常处理 C++ 动态内存 C++ 命名空间 C++ 模板 C++ 预处理器 C++ 信号处理 C++ 多线程 C++ Web 编程 C++ 套接字编程 C++ 并发 C++ 高级概念 C++ Lambda 表达式 C++ unordered_multiset

C++ 实用资源

C++ 问答 C++ 快速指南 C++ 速查表 C++ STL 教程 C++ 标准库 C++ 实用资源 C++ 讨论


C++ 变量和类型

C++ 变量

变量为我们提供了程序可以操作的命名存储空间。C++ 中的每个变量都有特定的类型,这决定了变量内存的大小和布局;可存储在该内存中的值的范围;以及可应用于该变量的操作集。

C++ 变量命名

变量名称可以由字母、数字和下划线组成。它必须以字母或下划线开头。由于 C++ 区分大小写,因此大小写字母有区别。

C++ 中变量命名约定的其他一些规则 -

  • 关键字不能用作变量名。
  • 变量名中不能包含空格。
  • 变量名中不能使用连字符 (-)。
  • 变量名不能以特殊字符和数字开头。它应该是大写字母、小写字母或下划线 (_)。

有效变量名示例

一些有效的变量名如下 -

int age;
int _age;
int student_age;
int studentAge;

无效变量名示例

一些无效变量名如下:-

int 2ndvariable;
int student-age;
int float;
int student age;
int #age;

C++ 变量的类型

如上一章所述,C++ 中有以下基本变量类型 -

Sr.No 类型 &描述
1

bool

存储值 true 或 false。

2

char

通常为单个八位字节(一个字节)。这是一个整数类型。

3

int

机器最自然的整数大小。

4

float

单精度浮点值。

5

double

双精度浮点值。

6

void

表示不存在类型。

7

wchar_t

宽字符类型。

C++ 还允许定义各种其他类型的变量,我们将在后续章节中介绍,例如枚举、指针、数组、引用、数据结构

下一节将介绍如何定义、声明和使用各种类型的变量。

C++ 中的变量定义

变量定义告诉编译器在何处以及为变量创建多少存储空间。变量定义指定一种数据类型,并包含一个或多个该类型的变量列表,如下所示:-

语法

type 变量列表;

其中,type 必须是有效的 C++ 数据类型,包括 char、w_char、int、float、double、bool 或任何用户定义的对象等;variable_list 可以包含一个或多个以逗号分隔的标识符名称。一些有效的声明如下所示:-

int    i, j, k;
char   c, ch;
float  f, salary;
double d;

int i, j, k; 这行代码声明并定义了变量 i、j 和 k;它指示编译器创建名为 i、j 和 k 的 int 类型变量。

C++ 中的变量初始化

变量可以在声明中初始化(赋予初始值)。初始化函数由一个等号后跟一个常量表达式组成,如下所示:-

语法

type variable_name = value;

示例

以下是一些示例:-

extern int d = 3, f = 5; // 声明 d 和 f。
int d = 3, f = 5; 		// 定义并初始化 d 和 f。
byte z = 22; 			// 定义并初始化 z。
char x = 'x'; 			// 变量 x 的值为 'x'。

对于没有初始化器的定义:具有静态存储期的变量隐式初始化为 NULL(所有字节的值均为 0);所有其他变量的初始值均未定义。

C++ 中的变量声明

变量声明向编译器保证存在一个具有给定类型和名称的变量,以便编译器无需了解变量的完整信息即可继续进行进一步编译。变量声明仅在编译时有意义,编译器在程序链接时需要实际的变量定义。

当您使用多个文件,并且在链接程序时可用的其中一个文件中定义变量时,变量声明非常有用。您将使用 extern 关键字在任何地方声明变量。虽然您可以在 C++ 程序中多次声明一个变量,但它只能在文件、函数或代码块中定义一次。

示例

尝试以下示例,其中一个变量在顶部声明,但在主函数内部定义 -

#include <iostream>
using namespace std;

// 变量声明:
extern int a, b;
extern int c;
extern float f;
  
int main () {
   // 变量定义:
   int a, b;
   int c;
   float f;
 
   // 实际初始化
   a = 10;
   b = 20;
   c = a + b;
 
   cout << c << endl ;

   f = 70.0/3.0;
   cout << f << endl ;
 
   return 0;
}

当编译并执行上述代码时,它会产生以下结果 -

30
23.3333

同样的概念也适用于函数声明,即在声明时提供函数名称,而其实际定义可以在其他任何地方给出。例如:-

// 函数声明
int func();
int main() {
    // 函数调用
    int i = func();
}

// 函数定义
int func() {
   return 0;
}

左值和右值

C++ 中有两种表达式 -

  • 左值 - 引用内存位置的表达式称为"左值"表达式。左值可以出现在赋值语句的左侧或右侧。

  • 右值 - 术语"右值"是指存储在内存中某个地址的数据值。右值是一种不能被赋值的表达式,这意味着右值可以出现在赋值语句的右侧,但不能出现在赋值语句的左侧。

变量是左值,因此可以出现在赋值语句的左侧。数值字面量是右值,因此不能被赋值,也不能出现在赋值语句的左侧。以下是有效的语句 -

int g = 20;

但以下语句无效,会产生编译时错误 -

10 = 20;