類型限定符在 C 程式語言中的現有資料類型中新增特殊屬性。
C 語言中存在三種型別限定符,其中volatile 和限制型別限定符解釋如下-
A易失性類型限定符用於告訴編譯器變數是共享的。也就是說,如果變數被宣告為 volatile,則可以被其他程式(或)實體引用和變更。
例如, volatile int x;
這只與指標一起使用。它表明指標只是存取引用資料的初始方式。它為編譯器優化提供了更多幫助。
範例程式
以下是volatile 類型限定符的C 程式-
int *ptr int a= 0; ptr = &a; ____ ____ ____ *ptr+=4; // Cannot be replaced with *ptr+=9 ____ ____ ____ *ptr+=5;
這裡,編譯器無法用一條語句*ptr =9 來替換兩個語句*ptr =4 和*ptr =5。因為,並不清楚變數“a”是否可以直接(或)透過其他指標存取。
例如,
restrict int *ptr int a= 0; ptr = &a; ____ ____ ____ *ptr+=4; // Can be replaced with *ptr+=9 ____ ____ *ptr+=5; ____ ____
這裡,編譯器可以將兩個語句替換為一條語句,*ptr =9。因為,可以肯定的是,該變數不能透過任何其他資源存取。
以下是使用restrict關鍵字的C程式-
Live示範
#include<stdio.h> void keyword(int* a, int* b, int* restrict c){ *a += *c; // Since c is restrict, compiler will // not reload value at address c in // its assembly code. *b += *c; } int main(void){ int p = 10, q = 20,r=30; keyword(&p, &q,&r); printf("%d %d %d", p, q,r); return 0; }
當執行上述程式時,會產生以下結果-
40 50 30#
以上是解釋C語言中的volatile和restrict類型限定符,並附上一個範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!