社区
C++ 语言
帖子详情
register是什么意思?
32131532
2007-08-18 07:34:06
register int elem_cnt = text_words ->size();
...全文
3375
7
打赏
收藏
register是什么意思?
register int elem_cnt = text_words ->size();
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iambic
2007-08-18
打赏
举报
回复
一个过时的关键字。
taiheBOY
2007-08-18
打赏
举报
回复
建议将变量值存储到CPU的一个寄存器中,或者存入到换存中。
访问CPU的寄存器比访问计算机的主存储器要快得多,然而由于寄存器资源是有限的,所以声明regeser只是建议将数据存储到寄存器中。
我啃
2007-08-18
打赏
举报
回复
呀,上面贴的那篇看了看质量实在太差了,看这篇吧:
http://dev.csdn.net/article/21/21103.shtm
gfxiang
2007-08-18
打赏
举报
回复
register指示声明的变量会经常改变,提示编译器为其分配一个寄存器
我啃
2007-08-18
打赏
举报
回复
这些都叫做“存储类关键字”
我啃
2007-08-18
打赏
举报
回复
C语言中auto,register,extern,static C语言中提供了存储说明符auto,register,extern,static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块是被建立,它在该程序块活动时存在,退出该程序块时撤销。
关键字extern和static用来说明具有静态存储期的变量和函数。用static声明的局部变量只能被定义该变量的函数所识别,但是不同于自动变量的是,static变量在其函数被调用退出后,仍保留其值。下次函数被调用时,可以访问最近一次被修改后的值。static变量的声明方法如下:
static int si = 1;
由于static的以上特性,可以实现一些特定的功能。下面说明常见的两种用途。
1. 统计函数被调用的次数
声明函数的一个局部变量,并设为static类型,作为一个计数器,这样函数每次被调用的时候就可以进行计数。这是统计函数被调用次数的最好的办法,因为这个变量是和函数息息相关的,而函数可能在多个不同的地方被调用,所以从调用者的角度来统计比较困难。测试代码如下:
/*--------------------------------------------------------------------------------
s_fun.c
to count the number of a function's being called, use static var.
*/
#include <stdio.h>
int fun_1(int);
int main()
{
int i;
for (i = 1; i <= 5; i++)
fun_1(i);
return 0;
}
int fun_1(int x)
{
static count = 0;
count++;
printf("I have been called %d times.\n", count);
return 2*x;
}
输出结果为:
I have been called 1 times.
I have been called 2 times.
I have been called 3 times.
I have been called 4 times.
I have been called 5 times.
2. 减少局部数组建立和赋值的开销
变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的存储类型。在一些含有较多的变量并且被经常调用的函数中,可以将一些数组声明为static类型,以减少建立或者初始化这些变量的开销。示例代码如下:
/*--------------------------------------------------------------
array_1.c
to test static array
*/
#include <stdio.h>
#include <time.h>
#include <string.h>
#define ARRAY_SIZE 10000
#define CALL_TIMES 30000
int fun_1();
int fun_2();
int main()
{
int i;
char string2[10], *string3;
time_t t;
time(&t);
string3 = ctime(&t);
printf("time 1: %s", string3);
for (i = 1; i <= CALL_TIMES; i++)
{
fun_1();
}
time(&t);
string3 = ctime(&t);
printf("time 2: %s", string3);
for (i = 1; i <= CALL_TIMES; i++)
{
fun_2();
}
time(&t);
string3 = ctime(&t);
printf("time 3: %s", string3);
return 0;
}
int fun_1()
{
int a[ARRAY_SIZE], b[ARRAY_SIZE];
int i, t;
for ( i = 0; i < ARRAY_SIZE; i++)
{
a[i] = i;
b[i] = ARRAY_SIZE - i;
}
for ( i = 0; i < ARRAY_SIZE; i++)
{
t = a[i];
a[i] = b[i];
b[i] = t;
}
return 0;
}
int fun_2()
{
static int a[ARRAY_SIZE], b[ARRAY_SIZE];
int i, t;
for ( i = 0; i < ARRAY_SIZE; i++)
{
a[i] = i;
b[i] = ARRAY_SIZE - i;
}
for ( i = 0; i < ARRAY_SIZE; i++)
{
t = a[i];
a[i] = b[i];
b[i] = t;
}
return 0;
}
经过多次运行后,典型的几次结果如下:
实验环境:
PC:Intel C 2.4D, 256M DDR333, 80G 7200RPM
OS:win XP professional, SP2
Compiler: TC 2.0
Reference:
1.H. M. Deitel, P. J. Deitel, C How To Program. 1994, Prentice Hall. 2002, China Mechine Press.
我啃
2007-08-18
打赏
举报
回复
向编译器说明最好将该变量用寄存器来存取
c语言中%加字母是啥意思,%C是
什么意思
? C语言中%c,%s分别代表
什么意思
?
导航:网站首页 >%C是
什么意思
? C语言中%c,%s分别代表
什么意思
?%C是
什么意思
? C语言中%c,%s分别代表
什么意思
?相关问题:匿名网友:%c单个字符输出的意思。%s是输出字符串。%d是输出整型。%f是输出整型。这是在scanf、printf这样的函数中,将参数类型与输入/输出句子中的相应位置相对应所使用的转义标志符。其中常用的有%c--对应字符型char%s--对应字符串型char...
did you re
gis
ter
the component correctly? For recursive components, make sure to provide the “name“
vue引用组件 did you re
gis
ter
the component correctly? For recursive components, make sure to provide the “name” 阐述问题: 在项目中用到了vue引用外部组件,报以上错误,百度了好半天,发现跟自己的问题还是不符合。下面说下我的问题所在。 错误信息及错误截图 通过以下错误可以看到,大概的意思就是:正确注册组件了吗?对于递归组件,请确保提供“name”选项。 其实我的这个问题不在子组件,折腾了半天,更换
c语言字母意义,%C是
什么意思
? c语言中?和:是
什么意思
导航:网站首页 >%C是
什么意思
? c语言中?和:是
什么意思
%C是
什么意思
? c语言中?和:是
什么意思
相关问题:匿名网友:%c单个字符输出的意思。%s是输出字符串。%d是输出整型。%f是输出整型。这是在scanf、printf这样的函数中,将参数类型与输入/输出句子中的相应位置相对应所使用的转义标志符。其中常用的有%c--对应字符型char%s--对应字符串型char*(char[])%d-...
Shadow Re
gis
ter
是什么?
ARM处理器有个Shadow Re
gis
ter
的概念,查了很多资料,语焉不详,究竟是
什么意思
呢? 这其实是个和硬件有关的概念。 有些re
gis
ter
是2层的,第一层是供CPU访问,第二层供Hw访问。 CPU访问 Hw访问 其中Hw访问的这层re
gis
ter
称之为Shadow Re
gis
ter
。CPU在写Re
gis
ter
的时候,会...
<a-auto-complete>did you re
gis
ter
the component correctly? For recursive components, make sure to pr
did you re
gis
ter
the component correctly? For recursive components, make sure to provide the “name” option.
C++ 语言
65,189
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章