首頁  >  文章  >  後端開發  >  解釋C語言中的volatile和restrict類型限定符,並附上一個範例

解釋C語言中的volatile和restrict類型限定符,並附上一個範例

王林
王林轉載
2023-09-10 22:25:01793瀏覽

類型限定符在 C 程式語言中的現有資料類型中新增特殊屬性。

解釋C語言中的volatile和restrict類型限定符,並附上一個範例

C 語言中存在三種型別限定符,其中volatile 和限制型別限定符解釋如下-

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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除