Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

例を使用して、Cの揮発性および制限型修飾子を説明します


型修飾子は、Cプログラミング言語の既存のデータ型に特別な属性を追加します。

例を使用して、Cの揮発性および制限型修飾子を説明します

C言語には3つの型修飾子があり、揮発性および制限型の修飾子については以下で説明します-

揮発性

揮発性型修飾子は、変数が共有されていることをコンパイラーに通知するために使用されます。つまり、変数が揮発性として宣言されている場合、変数は他のプログラム(または)エンティティによって参照および変更される可能性があります。

たとえば、volatile int x;

制限

これは、ポインターでのみ使用されます。これは、ポインタが差分データにアクセスするための最初の方法にすぎないことを示しています。最適化のためにコンパイラにさらにヘルプを提供します。

サンプルプログラム

以下は、揮発性型修飾子のCプログラムです-

   int *ptr
   int a= 0;
   ptr = &a;
   ____
   ____
   ____
      *ptr+=4; // Cannot be replaced with *ptr+=9
   ____
   ____
   ____
      *ptr+=5;

ここで、コンパイラーは、2つのステートメント* ptr +=4および*ptr+=5を1つのステートメント*ptr+=9に置き換えることはできません。なぜなら、変数「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

  1. イメージアレイとは何ですか? C++の例で説明する

    配列は、データのコレクションを格納および取得するための便利な方法です。 OpenCVでは、この概念を使用して、画像配列に複数の画像を読み込み、配列のインデックス番号を使用してそれらを表示できます。 次のプログラムは、マトリックス配列に複数の画像をロードし、インデックス番号で呼び出される配列の画像を表示します。 例 #include<iostream> #include<opencv2/highgui/highgui.hpp> using namespace cv; using namespace std; int main(int argc,const char**

  2. C#での値型と参照型の説明と対比

    一般に、C#のすべての型は、2つの主要なカテゴリ(値型)に分類できます。 および参照型 。それぞれのタイプを詳しく見ていきましょう。 値型 値型の変数には、データが直接含まれています。各変数には、データの独自のコピーがあります。したがって、値型の変数が別のオブジェクトを変更することはできません。 値の型は、次のいずれかの型になります- すべての数値型( int、float、など) およびダブル char およびブール タイプ 構造体 タイプまたは 列挙 タイプ。 simpleの値型には、値が含まれます。たとえば、整数型には実際の数値が含まれ、参照型のように数値へのポインタは含