C99中新增加了restrict修飾的指針:
由restrict修飾的指針是最初唯一對指針所指向的對象進行存取的方法泌辫,
僅當?shù)诙€指針基于第一個時,才能對對象進行存取绿淋。
對對象的存取都限定于基于由restrict修飾的指針表達式中谤饭。
由restrict修飾的指針主要用于函數(shù)形參播歼,或指向由malloc()分配的內存空間。
restrict數(shù)據(jù)類型不改變程序的語義蚓炬。
編譯器能通過作出restrict修飾的指針是存取對象的唯一方法的假設松逊,更好地優(yōu)化某些類型的例程。
restrict是c99標準引入的肯夏,它只可以用于限定和約束指針经宏,
并表明指針是訪問一個數(shù)據(jù)對象的唯一且初始的方式.
即它告訴編譯器犀暑,所有修改該指針所指向內存中內容的操作都必須通過該指針來修改,
而不能通過其它途徑(其它變量或指針)來修改;這樣做的好處是,
能幫助編譯器進行更好的優(yōu)化代碼,生成更有效率的匯編代碼.如
int *restrict ptr,
ptr 指向的內存單元只能被 ptr 訪問到,任何同樣指向這個內存單元的其他指針都是未定義的烁兰,
直白點就是無效指針耐亏。
restrict 的出現(xiàn)是因為 C 語言本身固有的缺陷,
C 程序員應當主動地規(guī)避這個缺陷沪斟,而編譯器也會很配合地優(yōu)化你的代碼.