型修飾子は、C プログラミング言語の既存のデータ型に特別なプロパティを追加します。
C 言語には 3 つの型修飾子があり、そのうちの volatile 型修飾子と制限付き型修飾子については次のように説明します。
Yi Losing 型修飾子は、変数が共有されていることをコンパイラに伝えるために使用されます。つまり、変数が 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 を使用できません。 2 つのステートメント *ptr =4 と *ptr =5 を置き換えます。なぜなら、変数「a」に直接 (または他のポインターを介して) アクセスできるかどうかが明確ではないからです。
たとえば、
restrict int *ptr int a= 0; ptr = &a; ____ ____ ____ *ptr+=4; // Can be replaced with *ptr+=9 ____ ____ *ptr+=5; ____ ____
ここでは、コンパイラは 2 つのステートメントを 1 つのステートメント *ptr =9 に置き換えることができます。確かに、他のリソースからは変数にアクセスできないからです。
次は、restrict キーワードを使用した C プログラムです。
ライブ デモンストレーション
#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 中国語 Web サイトの他の関連記事を参照してください。