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



文章目录

  • 一、实用性增强 - 变量任意位置定义
  • 二、register 关键字增强 - 自动进行寄存器优化







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



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 关键字增强 - 自动进行寄存器优化 )_C++增强






二、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 关键字增强 - 自动进行寄存器优化 )_register_02


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  BYaHC1OPAeY4   2024年05月08日   56   0   0 C++
  TKwJ4YzyA8uz   2024年05月17日   43   0   0 C语言
  V88gxnVgnp1F   2024年05月08日   92   0   0 C语言
  6Df3JnWQUC5m   2024年05月08日   82   0   0 C语言
  o1ZcTI9mJsxK   2024年05月08日   121   0   0 C语言
  6Df3JnWQUC5m   2024年05月17日   54   0   0 C语言
  yZdUbUDB8h5t   2024年05月05日   43   0   0 C++
  oXKBKZoQY2lx   2024年05月17日   56   0   0 C++
K1I6GvxBEuyy
作者其他文章 更多