volatile:一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
register:不保存在内存上,而是直接存储在CPU中的寄存器中,这种变量称为寄存器变量。常用于循环变量等频繁使用的变量。
inline:内联函数,以空间换时间。用于频繁大量大用的函数。
例如:static inline void myprint(int n);
在IOS中也有这样为减少函数频繁调用而生的方法,依赖runtime来实现。
例如:
void (*setter)(id, SEL, BOOL);
setter = (void (*)(id, SEL, BOOL))[target methodForSelector:@selector(setFilled:)];
for ( int i = 0 ; i < 1000 ; i++ )
setter(targetList[i], @selector(setFilled:), YES);
union:变量互斥使用,大小取最宽的变量。
例如:两个变量共享统一存储空间。
union var{
long int l;
int i;
};
auto :自动变量,由编译器自动分配及释放。通常在栈上分配。不用写上默认就是这个。
网友评论