C および C++ の Memmove()

C Oyobi C No Memmove



今日は、C および C++ 言語の重要な機能の 1 つである memmove() 関数を学習します。その前に、C および C++ 言語の基本を簡単に見てみましょう。また、両方の C/C++ 言語にどのような関数があるかについても説明します。

C プログラミング言語は簡単で、あらゆる目的に非常に効果的です。 Windows OS、データベース、インタープリター、その他のツールなどのソフトウェアの実装が可能です。 C は、初心者がコーディングを学ぶのに最適な言語です。そのため、C プログラミングは他のすべてのコンピューター言語の基礎として機能するため、母語として知られています。 C++ プログラミング言語の基盤は、オブジェクト指向プログラミング (OOP) の考え方に基づいています。 C++ には明確な構造があるため、ユーザーはプログラムの原理を簡単に開発して理解することができます。 C\C++ プログラミング言語は、複数の機能を実行したり、変数をある型から別の型に切り替えたりする際に非常に用途が広いです。 memmove() 関数は、C/C++ の関数の 1 つです。







memmove() 関数は、転送元で示されるメモリ ブロックの内容から、転送先で示される位置に「num」バイトを同時に転送します。 memmove() 関数は、ソース オブジェクトと宛先オブジェクトがオーバーラップし、未定義の動作が発生しないようにする場合にのみ役立ちます。 memmove() 関数についてさらに学ぶために、深く掘り下げて、 memmove() 関数の構文と例を実装する方法を見てみましょう。



構文:

以下は、C 言語と C++ 言語の両方で、同じ書き方と memmove() 関数の実装です。最初に、「void」キーワードを記述します。これは、関数が値を返さない場合に、実装したい関数の名前 (memmove() 関数) を記述することを意味します。関数の括弧内に、「num」バイトを「void」キーワードで配置できるように宛先を記述します。次に、「num」バイトを取得するソースの場所を書き込みます。







パラメーター:

手: データがコピーされるストレージの場所へのアドレス。

ソース: データのコピー元のストレージの場所へのアドレス。



カウント: ソースから宛先にコピーするデータの量。

戻り値:

代わりに、ターゲット メモリ領域へのアドレスを取得します。 Dest は memmove() 関数によって返されます。

例 1: C での Memmove() 関数の実装

C 言語の最初の簡単な例の実装を始めましょう。書き始めるには、プログラムを書いて実行できるように、まず C コンパイラが必要です。そのためには、C コンパイラを開き、プログラムの実装を開始します。

#include
#include

int メイン ( )
{
キャラch1 [ ] = { 'L' '私' 「ん」 'の' 'バツ' } ;

int の長さ = sizeof ( ch1 ) / のサイズ ( ch1 [ 0 ] ) ;

printf ( 'memmove() 関数を適用する前に:' ) ;
為に ( 整数 = 0 ;私 < 長さ; i++ )
{
printf ( '%c' 、ch1 [ ] ) ;
}

チャー * ch2 = & ch1 [ 2 ] ;
メモリ移動 ( ch2、ch1、sizeof ( チャー ) * 2 ) ;

printf ( ' \n \n memmove() 関数を適用した後: ' ) ;

為に ( 整数 = 0 ;私 < 5 ; i++ )
{
printf ( '%c' 、ch1 [ ] ) ;
}
戻る 0 ;

}


コンパイラを起動した後、常にコア プログラム モジュールを組み込むことから始めます。これらのモジュールは、バンドルされている C 言語モジュールです。モジュールを構築するために数十行のコードを入力するのではなく、これらのモジュールを含めるには 1 行のコードを入力するだけです。 「#」インジケータは、「include」キーワードを使用してモジュールをプログラムに追加する前に、最初にモジュールをロードするように翻訳者に通知します。 「stdio.h」モジュールは、コンパイラがユーザーからのデータを受け取り、それをユーザーに表示することを意味します。プログラムの 2 番目のモジュールは「#include 」で、既存のプログラムで文字列関連の関数を使用できるようにします。

次に、main() 関数を開始して、プログラムに実装する実際のコード行を記述できるようにします。 6行目では、character型の文字配列名「ch1」を宣言しています。次に、それに文字値を割り当てます。その後、「ch1」の長さを計算し、「for ループ」を使用して入力配列「ch1」を出力します。

その後、文字型の「ch2」配列へのポインタを宣言し、「ch1」配列のアドレスを「ch2」配列に代入します。次に、printf() ステートメントを使用して出力します。前の図の出力を見てみましょう。

例 2: C++ での Memmove() 関数の実装

これは、memmove() 関数が C++ 言語でどのように実行されるかを示す基本的な例です。作成を開始するには、プログラムを作成して実行できるように、まず C++ IDE が必要です。そのためには、C++ コンパイラを開き、プログラムの実装を開始します。

コンパイラを開いた後、プログラムを実行するために C++ プログラミング言語に必要なヘッダー ファイルを含めることから始めます。プログラムを作成して memmove() メソッドを使用するには、まず、「iostream」と「cstring」という 2 つの基本的なヘッダー ファイルを含めます。 C++ には、配列と文字列を操作する方法がいくつか用意されています。これらの関数は、特定のバイト数のデータをソースから宛先にコピーするために使用される「#include 」ヘッダー ファイルを含むプログラムにヘッダー ファイルが含まれている場合に使用できます。ヘッダー ファイル「#include 」 は、ユーザーからのデータの入力と出力の両方に使用されます。次に、コードで標準の「名前空間 std」を使用して C++ プログラミング言語の標準構文を使用し、オブジェクト、メソッド、およびパラメーターがプログラム全体で同じスコープを参照しないようにします。

#include
#include
名前空間 std を使用します。

int メイン ( )
{
文字ソース [ 50 ] = 「1234567890」 ;
文字宛先 [ 50 ] = 「0987654321」 ;

カウト << '宛先に memmove を適用する前に:' << 始める << エンドル;
メモリ移動 ( 宛先、ソース、 6 ) ;
カウト << '宛先に memmove を適用した後:' <<

戻る 0 ;
}


main() 関数を書き始めて、実際のコード行の実行を開始します。 7 行目には、「src[50]」および「dest[50]」として宣言された長さ 50 の 2 文字の型配列があります。 「cout」ステートメントを使用して、「Before Applying memmove() to Destination: 」というメッセージを出力します。次に、「dest」パラメータを渡して、「dest」配列の値を出力します。次に、「src[50]」および「dest[50]」として宣言された文字型変数に memmove() 関数を適用し、原点(src)からターゲット(dest)までの一定バイト数を「カウント」の数。これは、「src」から「dest」にコピーされるバイト数を識別します。次の図でわかるように、カウント数「6」を宣言しました。

その後、再度 cout 文で「After Applying memmove() to Destination: 」というメッセージを表示し、変数 dest に character 型の配列を渡します。プログラムの実行を停止するには、プログラムの最後で return ステートメントを使用する必要があります。次に、メイン関数に 0 を返します。これは、プログラムが正常に実行され、目的を達成したことを示します。

次の memmove() メソッドの出力で、重複がある場合 (たとえば、最初のポインターが文字 6 に移動した場合)、ポインターが印刷を続け、後続の文字が重複することがわかります。この C++ コード スニペットが実行され、結果が次の図に表示されます。

結論

この記事では、C および C++ プログラミング言語の memmove() 関数について学びました。 memmove() 関数がどのように機能するかについて、C および C++ の例を通して、コードのすべての行の詳細な説明とともに説明しました。この記事が、C および C++ の memmove() 関数に関する知識を深めるのに役立つことを願っています。