charへのポインタだけを使って変数 "i"の変数 "j"に代入する必要があります。私はコードを書くことができませんでしたので、私はこの解決方法を見ていますが、私は "for"ボディで何が起こったのか分かりません。誰かが私にそれを説明することはできますか?誰かがコードを説明できますか?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char **argv) {
int i = 10;
int j = 20;
char *p, *q;
p = (char*)&i;
q = (char*)&j;
for(int k = 0; k < sizeof(i); ++k) {
*(q + k) = *(p + k);
}
printf("%d == %d\n", i, j);
return 0;
}
'*(q + k)'は 'q [k]'と同じです。そこから行ってください。 – dhke
charへのポインタは、整数の別々のバイトを指します。あなたのループは 'sizeof(i)'回数だけ実行されます。これはあなたのマシンで '整数i 'が取るバイト数を表します。今これを@dhkeのコメントと組み合わせてください – Stefan
あなたの質問がこのタイトルでうまくできているかどうかわかりません。答えのために、forの命令は、(q + k)アドレスのブロックに(p + k)アドレスの値に影響を与えます。 –