volatile:一個(gè)定義為volatile的變量是說(shuō)這變量可能會(huì)被意想不到地改變矩乐,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了分歇。精確地說(shuō)就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值职抡,而不是使用保存在寄存器里的備份误甚。
register:不保存在內(nèi)存上缚甩,而是直接存儲(chǔ)在CPU中的寄存器中,這種變量稱為寄存器變量壕探。常用于循環(huán)變量等頻繁使用的變量。
inline:內(nèi)聯(lián)函數(shù)李请,以空間換時(shí)間厉熟。用于頻繁大量大用的函數(shù)导盅。
例如:static inline void myprint(int n);
在IOS中也有這樣為減少函數(shù)頻繁調(diào)用而生的方法揍瑟,依賴runtime來(lái)實(shí)現(xiàn)。
例如:
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:變量互斥使用月培,大小取最寬的變量。
例如:兩個(gè)變量共享統(tǒng)一存儲(chǔ)空間纪蜒。
union var{
long int l;
int i;
};
auto :自動(dòng)變量此叠,由編譯器自動(dòng)分配及釋放纯续。通常在棧上分配灭袁。不用寫(xiě)上默認(rèn)就是這個(gè)。