register属于存储类关键字。其它还有auto、extern、static、const、volatile、restricted等。
如下例。需要操作一个比较大的二维数组10000×5000。
register int i, j;
for ( i = 0; i < 10000; i++)
for ( j = 0; j < 5000; j++)
p[i][j] = 5*p[i][j];
在定义行下标与列下标这两个变量时,前缀了关键字register。这是为了提高这段代码的运行速度,把需要频繁使用的两个下标变量放在寄存器里。本来在内存里的变量需要先从内存里取出到CPU的寄存器里。显然,这样就大大提高了处理大数组的速度。
不过,关键字register仅仅是对编译的建议,不是命令。因为,CPU的寄存器是有限的。当你所用用CPU的寄存器有富余时,才会把这两个变量放在寄存器里。
有不少人为追求速度,用了许多register变量,这是没用的,编译器肯定会忽视大部分register前缀的。
