一、实用性增强 - 变量任意位置定义



C 语言定义变量位置 : 在 C 语言中 , 函数作用域中使用到的变量 , 必须在 作用域 开始的位置定义 , 一旦开始编写代码逻辑后 , 在逻辑代码行之间 , 不能定义变量 ;

  • 新版本的 C 语言编译器不会报错 , 可以在 逻辑代码 之间定义变量 ;
    • 在 C99 标准引入了 局部变量 可以在任何位置声明的语法 ;
  • 老版本的 C 语言编译器 ( 还未兼容 C99 标准 ) 会报错 , 如果使用 2000 年左右的 Microsoft Visual C++ 开发环境 , 就会报语法错误 ;

为了更好的兼容性 , 一般情况下都要将 C 语言的 变量 定义在 函数开始位置 ;


C++ 语言定义变量位置 : C++ 语言 在 C 语言 的基础上 , 增强了 " 实用性 " , 变量可以在 使用时 再定义 , 不需要在 函数 开始位置定义 ;


代码示例 :

// 包含 C++ 头文件
#include "iostream"

// 使用 std 标准命名空间
//		该命名空间中 , 定义了很多标准定义
using namespace std;


int main()
{
	// 作用域开始位置定义变量
	int a = 10;
	// 打印变量值
	cout << "a = " << a << endl;

	// 作用域中间位置定义变量
	int b = 10;
	// 打印变量值
	cout << "b = " << b << endl;
	

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");
}

执行结果 :

a = 10
b = 10
Press any key to continue . . .

【C++】C++ 语言对 C 语言的加强 ① ( 实用性增强 - 变量任意位置定义 | register 关键字增强 - 自动进行寄存器优化 )-LMLPHP





二、register 关键字增强 - 自动进行寄存器优化



在 C 语言中 , register 关键字 的作用是 告诉 编译器 , 将 使用 register 关键字 修饰的 变量 , 存储在 寄存器 中 , 这样可以提高程序的执行效率 ;

在 早期 的计算机 中 , 由于硬件限制 , 程序的执行效率不是很高 , 因此需要手动 高速编译器 , 将频繁使用的变量存储在寄存器 中 , 用于提高程序的访问速度 ;

C89 标准 中 , register 关键字 只能用于修饰 局部变量 , 但是在 C99 标准中 弃用了 register 关键字 ;


在 C++ 语言 , 也弃用了 register 关键字 , 但是 C++ 编译器 可以自动优化代码 , 不需要手动使用 register 关键字 指定变量存储在编译器 中 , 让 编译器 自动 优化 即可 ;


使用 & 取地址运算符获取 寄存器变量 地址 ,

  • C 语言中 无法获取 register 寄存器变量的地址 ;
  • C++ 语言中 可以获取 register 寄存器变量的地址 ;

register 寄存器变量使用代码示例 :

// 包含 C++ 头文件
#include "iostream"

// 使用 std 标准命名空间
//		该命名空间中 , 定义了很多标准定义
using namespace std;


int main()
{
	// 作用域开始位置定义变量
	// 寄存器变量已弃用 , 但是使用不报错
	register int a = 10;

	// 打印变量值
	cout << "a = " << a << endl;
	// 打印变量地址
	cout << "&a = " << &a << endl;
	

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");
}

执行结果 :

a = 10
&a = 00FAFD78
Press any key to continue . . .

【C++】C++ 语言对 C 语言的加强 ① ( 实用性增强 - 变量任意位置定义 | register 关键字增强 - 自动进行寄存器优化 )-LMLPHP

08-18 20:47