トップページ – C言語編 – 標準ライブラリのリファレンス(名前順)
トップページ – C言語編 – 標準ライブラリのリファレンス(ヘッダ別)
概要 |
あるメモリアドレスを起点に、一定の文字数を別のメモリアドレスへコピーする。 |
|
ヘッダ | ||
形式 |
void* memcpy(void* restrict s1, const void* restrict s2, size_t size); |
|
引数 |
s1 |
コピー先の先頭のメモリアドレス。 |
s2 |
コピー元の先頭のメモリアドレス。 |
|
size |
コピーする文字数。 |
|
戻り値 |
s1 が返される。 |
|
詳細 |
基本的な意味は strcpy関数と変わらないが、ヌル文字によって打ち切られることがない。 |
|
注意 |
コピー先の範囲と、コピー元の範囲が重なり合っている場合の結果は未定義である。重なり合う場合には、memmove関数を使えば良い。 |
|
使用例 |
実行結果:
|
|
関連 |
コピー先範囲とコピー元範囲が重なり合う場合は、memmove関数を使う。文字列のコピーならば、strcpy関数や strncpy関数が使える。 文字をワイド文字とみなして同様の処理を行う wmemcpy関数がある。 |
|
解説章 | 第34章 |
本ページはアフィリエイトプログラムによる収益を得ています。
以下のリンクから商品を購入されると、Programming Place
管理者に紹介料が支払われています。
(
の直後、)
の直前に空白を入れない)return 0;
を削除(C言語編全体でのコードの統一)- 解説のベースを C99 に上げる対応 - 仮引数に restrict を付加
解説中で C95 を(C89 に対して)特別扱いしないように修正。そもそもC言語編は C95ベースなので、余計な説明は省く。
全体的に文章を見直し修正。C99 の restrict について追記。
「サイズ」という表記について表現を統一。 型のサイズ(バイト数)を表しているところは「大きさ」、要素数を表しているところは「要素数」。
新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |