C语言经典100例题(45)--学习使用register定义变量的方法

目录

题目

问题分析

代码

运行结果


题目

学习使用register定义变量的方法

问题分析

register是做声明的,为了提高效率。 register变量不能做取地址运算符&操作。

声明变量具有register储类型就要求编译器把变量存储在寄存器中,而不是像其他变量一样保留在内存中。 (寄存器是驻留在计算机CPU中的存储单元。存储在寄存器中的数据会比存储在普通内存中的数据访问和更新的速度更快。)指明变量的存储类型是register是一种请求,而不是命令。编译器可以选择把register型变量存储在内存中。

register存储类型只对声明在块内的变量有效。register变量具有和auto变量一样的存储期限、作用域和链接。但是,register变量缺乏auto变量所具有的一种性质: 由于寄存器没有地址,所以对register变量使用取地址运算符&是非法的。即使编译器选择把变量存储在内存中,这一限制仍适用。

regste存储类型最好用于需要频繁进行访问或更新的变量。例如,在for语句中的循环控制变量就比较适合声明为register。

代码

复制代码
#include<stdio.h>
void main()
{
	register int i;
	int tmp = 0;
	for (i = 1;i <= 100;i++)
		tmp += i;
	printf("The sum is %d\n", tmp);
}

运行结果

相关推荐
野犬寒鸦20 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
wenzhangli720 小时前
ooderA2UI BridgeCode 深度解析:从设计原理到 Trae Solo Skill 实践
java·开发语言·人工智能·开源
灵感菇_20 小时前
Java 锁机制全面解析
java·开发语言
wdfk_prog20 小时前
[Linux]学习笔记系列 -- [drivers][mmc][mmc_sdio]
linux·笔记·学习
果果燕20 小时前
今日学习笔记:双向链表、循环链表、栈
笔记·学习·链表
wazmlp00188736921 小时前
python第三次作业
开发语言·python
娇娇乔木21 小时前
模块十一--接口/抽象方法/多态--尚硅谷Javase笔记总结
java·开发语言
觉醒大王21 小时前
AI写的青基中了
人工智能·笔记·深度学习·学习·职场和发展·学习方法
明月醉窗台21 小时前
qt使用笔记六之 Qt Creator、Qt Widgets、Qt Quick 详细解析
开发语言·笔记·qt
wangjialelele21 小时前
平衡二叉搜索树:AVL树和红黑树
java·c语言·开发语言·数据结构·c++·算法·深度优先