問題タブ [memmove]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - memmove がパラメータとして char * ではなく void * を使用するのはなぜですか?
c ライブラリ関数の定義はmemmove
次のようになります。
なぜvoid*
andconst void*
をパラメータの型として使用する必要があるのか 疑問に思っています。なぜ直接char*
ではないのconst char*
ですか?
アップデート
出力: test_case = {1, 2, 3, 4, 3, 4, 5, 6, 10}
for-loop - 逆反復、for ループと while ループのどちらが速いですか?
私はmemmove
Rust で標準関数を実装しようとしていますが、下向きの反復ではどの方法がより高速であるか疑問に思っていました (ここでsrc
< dest
):
また
rev()
ループ内のfor
バージョンでは大幅に遅くなりますか?
c++ - realloc() を使用して memmove() を安全にする
私の機能では、部分文字列を置き換えます。入力部分文字列が元の部分文字列よりも長い場合、入力文字列の一部を移動して、入力部分文字列用のスペースを確保します。
これにより、未定義の動作が発生することを理解しています。realloc() を使用して必要なスペースを割り当てることができるはずだと思っていましたが、成功していません。
memmove() の前にこれを追加してみました:
これは合理的な戦略ですか?この操作のためのスペースを作る正しい方法は何ですか?
realloc() を使用しないプログラムは次のとおりです。
c - マルコフ連鎖。実装追加方法
実装の次のステートメントと少し混乱しています。
mmemove(プレフィックス、プレフィックス + 1、(NPREF - 1) * sizeof(プレフィックス[0]));
したがって、プレフィックスは char 型のポインターです。この用語では、プレフィックス + 1 は配列内の次の文字へのリンクですね。
それはどのように正しい方法で機能しますか?私は memmove について読み、ポインターについて読みましたが、この追加関数の動作を自分で調べることはできませんでした。