Cの「揮発性」修飾子
ここでは、C++での揮発性修飾子の意味を確認します。揮発性修飾子は、変数を宣言するときに変数に適用されます。これは、値がいつでも変更される可能性があることをコンパイラーに通知するために使用されます。これらは揮発性のいくつかの特性です。
- volatileキーワードはメモリ割り当てを削除できません
- 変数をレジスタにキャッシュすることはできません。
- 値は割り当て順に変更できません。
volatileキーワードの使い方を見てみましょう。
volatile int a; int volatile a;
ここで、これら2つの宣言は正しいです。他のデータ型と同様に、揮発性のポインター、構造体、共用体などを使用できます。揮発性の構造体と共用体はそれ自体が揮発性である可能性があり、それらのメンバー変数も揮発性の型である可能性があります。
揮発性物質はさまざまな場所で使用されます。メモリマップドペリフェラルレジスタ、他の関数や割り込みサービスルーチンによってアクセスされるいくつかのグローバル変数、またはいくつかのマルチスレッドアプリケーションでは、volatileを使用できます。
例
int main (){ int value; value++; }i nt main (){ volatile int value; value++; }
コードには2つのブロックがあります。最初のブロックでは、volatileキーワードは存在しません。したがって、最初のケースでは、変数がメモリからCPUレジスタにコピーされてから、操作が実行されます。 2番目のケースでは、揮発性物質が存在します。したがって、この場合、変数はメモリからレジスタにコピーされません。
-
C++でのラインリフレクション
2D平面上にn個の点があるとすると、指定された点を対称的に反射するy軸に平行な線があるかどうかを確認する必要があります。つまり、指定された線上にすべての点を反映した後に線が存在するかどうかを確認する必要があります。元のポイントのセットは、反映されたポイントと同じです。 したがって、入力がpoints =[[1,1]、[-1,1]]のような場合 その場合、出力はtrueになります これを解決するには、次の手順に従います- 1つのセットを定義します。 n:=ポイントのサイズ minVal:=inf maxVal:=-inf 初期化i:=0の場合、i <
-
C++の対角トラバースII
numsというリストのリストがあるとすると、numsのすべての要素を対角線順に表示する必要があります。 したがって、入力が次のような場合 その場合、出力は[1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]になります。 これを解決するには、次の手順に従います- 配列retを定義する 1つの2Dアレイvを定義する 初期化i:=0の場合、i