C 语言 register 关键字2024 年 8 月 28 日 | 3 分钟阅读 C 语言程序中的所有变量都有一个内存地址并存储在内存中。然而,register 关键字表示编译器应该将变量存储在 CPU 寄存器中而不是内存中。如果你不知道,处理器只有一定数量的通用寄存器,并且 CPU 在对数据执行任何算术或逻辑操作之前会将所有变量加载到这些寄存器中。寄存器明显比内存快,CPU 的访问时间也更短。因此,我们将程序中经常使用的变量与 register 关键字配对使用。换句话说,register 关键字指示编译器将变量保存在处理器寄存器中,以便快速访问它。但是,编译器会决定是将其保存在内存中还是处理器寄存器中。 如何使用 register 关键字?你只需要在变量中包含 register 关键字,即可将其变为寄存器变量。你可以参考以下示例 register 关键字示例以下示例设置了各种类型的寄存器变量,并使用 print() 显示它们的值 输出 The value of register variable x : B The value of register variable a : 20 The value of register variable b : 35 我们可以获取寄存器变量的地址吗?需要记住的一点是,即使编译器选择将变量存储在内存而不是 CPU 寄存器中,如果你在变量中包含了 register 关键字,你也不能使用一元地址运算符 (&) 访问其地址。 根据你的编译器,对寄存器变量使用地址运算符 (&) 将导致警告或错误,因为 CPU 寄存器没有地址,并且在使用 register 关键字时可以用来存储变量而不是内存。请查看以下示例代码及其结果以进行演示 C 语言示例:访问寄存器变量地址输出 在此示例中,我们的编译器会生成一个错误。但是,有些编译器只发出警告。 main.c: In function 'main': main.c:5:5: error: address of register variable 'x' requested int* ptr = &x; // pointer to a variable x 带指针变量的 register 关键字对于指针变量,我们可以像其他数据类型一样使用 register 关键字。在这种情况下,它将有一个内存位置地址。 输出 22 register 变量的作用域register 关键字只能用于局部变量;全局变量不能使用此关键字。 输出 main.c:3:14: error: register name not specified for 'x' register int x = 22; 关于 register 关键字的重要信息首先,C 标准禁止对单个变量使用多个存储说明符。register 关键字也是 C 语言中的一种存储类。在 C 语言中,有四种不同类型的存储类说明符
因此,我们无法将 register 与 extern、auto 和 static 存储类说明符一起使用。 输出 main.c: In function 'main': main.c:5:5: error: multiple storage classes in declaration specifiers static register int x = 22; |
引言:解析过程涉及确定给定程序是否合法。它检查作为输入的字符串是否遵循已建立的语法。解析器有两种类型:1. 自顶向下解析器:这些解析器从树的根部开始,然后向下工作...
阅读 4 分钟
在本文中,我们将讨论 C 中的 atoi() 函数及其示例。什么是 Atoi()?atoi() 函数将字符字符串转换为整数值。输入字符串是可能转换为返回类型数值的字符字符串……
阅读 4 分钟
在本教程中,我们将学习排序 DLL 到平衡 BST 的就地转换。方法一(简单) 下面是一个简单的算法,我们首先找到列表的中间节点并将其作为要构建的树的根。1)创建...
阅读 4 分钟
C中的strtok函数 在C编程语言中,strtok()方法主要用于根据指定的定界符将字符串分割成标记或更小的字符串。为了获取所有标记,应该在循环中调用strtok()方法,并在...时
5 分钟阅读
在本文中,我们将讨论。简介:可以使用维吉尼亚密码算法加密和解密文本。凯撒密码与维吉尼亚密码有关。它是一种加密字母文本的技术。关键字的字母结构是其基础....
阅读 4 分钟
计算机编程的本质是解决问题。因此,学习有效的方法对于任何有抱负的开发人员都至关重要。在各种解决问题的方法中,Skill Rack Solution in C 作为一种强大的工具脱颖而出,可以帮助程序员克服困难的挑战。在本文中,我们...
阅读 3 分钟
引言:C/C++ strtoul()函数将字符串str的第一个字符转换为无符号长整型值,指定基数必须在2到36之间(包含)或具有特殊值0。一旦检测到第一个非空白字符,此函数...
阅读 4 分钟
高斯-赛德尔方法是一种迭代过程,用于解决(许多)线性方程组的平方系统。它也经常被称为“Liebmann”方法。任何迭代数值分析方法中的每一次解的尝试都始于一个粗略的解...
阅读 4 分钟
? C 语言编程中的垃圾值是指已存储在变量或内存地址中但未初始化或分配,也没有设置为特定值的 a。该值可能是内存位置的 ious 值...
阅读 3 分钟
本主题将讨论在 C 编程语言中反转字符串的几种方法。反转字符串是一种技术,它反转或改变给定字符串的顺序,使字符串的最后一个字符成为字符串的第一个字符...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India