私は C のポインタについて少し復習していましたが、ちょっとしたコードに出くわして少し混乱しました。レビューのためにクイズを行っていたqeeksquiz.com/pointers
ところ、次のコードに出くわしました。
#include<stdio.h>
int main()
{
int a;
char *x;
x = (char *) &a;
a = 512;
x[0] = 1;
x[1] = 2;
printf("%d\n",a);
return 0;
}
出逢った時x = (char *) &a
、ちょっと戸惑いました。x は a のアドレスを保持するポインターであることは理解していますが、代入するx[0] = 1
とx[1] = 2;
答えが印刷されて 513 になります。答えは、使用しているマシンにどのように依存するか、リトルエンディアン マシンがどのように変化するかについて述べています。バイナリで a を読み取る方法。どうやって 512 から 513 になるのか完全に混乱しています。おそらく x[0] = 1 が原因だと思いますが、100% 確実ではありません。誰かがこれを説明するのを助けることができますか? を割り当てx[0] = 2
た場合、a の値は何に変化しますか?
助けてくれてありがとう!