こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

VC++の文法で質問です

すみませんが教えて下さい。
仕事でVC++のプログラミングをするのですが学校で学んだわけではなく、C、C++、VC++も本やサイトを読んで作ったりした程度です(期間もまだ2か月程度) まだコードも読めないものが多く、つまづいてます。 
失礼だとは思うのですがこのコードを
どう読めばいいか教えて下さい。
情報取得してるようなのですがさっぱりわかりません。
どなたかお願いします。

memcpy(m_wPos, IniDateClass->GetIniFileDataWinPos(),sizeof(m_wPos));

投稿日時 - 2008-07-17 21:30:49

QNo.4184489

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

14人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.6

基本的には既に回答が出ている通りです。
あとは、そのコードを書いたプログラマの力量にもよりますが...

std::memcpyではなくmemcpyを使っているのは、Cとのソース共有を視野に入れているか、標準準拠度が低い古い処理系との互換性を視野に入れているかです。
また、std::copyではなくmemcpyを使っているのは、対象としているオブジェクトがC互換型(POD型)であり、反復子ではなくポインタであることをコードに語らせています。
さらに、代入ではなくmemcpyなのは、対象としているオブジェクトがスカラ型やクラス型(構造体)ではなく、配列であることを示唆しています。

投稿日時 - 2008-07-18 09:07:02

ANo.5

No.4さんへ
普通に配列で宣言してあるのでしょう
char m_wPos[256];
でsizeof(m_wPos)は256になります。

投稿日時 - 2008-07-18 07:32:50

ANo.4

 こんばんは。私の勘違いでしたら申し訳ありません。

 このm_wPosはポインタだと思いますが、sizeof(m_wPos)ではなくてsizeof(*m_wPos)の間違いでは無いでしょうか?
 仮に
 char* m_wPos;
 だった時、sizeof(m_wPos) == 4 で sizeof(*m_wPos) == 1 と言う事で、頭痛の種に成るのでは?

↓これの間違えなのでは??
memcpy(m_wPos, IniDateClass->GetIniFileDataWinPos(),sizeof(*m_wPos));

投稿日時 - 2008-07-17 23:49:21

ANo.3

グーグルで「memcpy」と入力して検索すれば調べられますよ。
開発技術者を目指しているのであれば調査能力を養う事が大切です。

最初のうちはわからない事がわからないという状況だと思いますがそのうち慣れます。
頑張って良い技術者さんになってくださいね。

投稿日時 - 2008-07-17 23:21:35

ANo.2

memcpy
バッファ間で文字をコピーします。
void *memcpy( void *dest, const void *src, size_t count );

dest
コピー先のバッファ
src
コピー元のバッファ
count
コピーする文字数

解説
memcpy 関数は src から dest に count バイト数をコピーします

投稿日時 - 2008-07-17 22:38:35

ANo.1

ポインタ IniDateClass->GetIniFileDataWinPos() が指す
sizeof(m_wPos) バイトの領域を
ポインタ m_wPos の指す領域にコピーします。

投稿日時 - 2008-07-17 21:47:19

あなたにオススメの質問