#include<stdio.h>
int main()
{
int arr[3] = {2, 3, 4};
char *p;
p = arr;
p = (char*)((int*)(p));
printf("%d, ", *p);
p = (int*)(p+1);
printf("%d", *p);
return 0;
}
p =(int *)(p + 1)ではありません。配列の次の要素を指していますか? (viz 3?)したがって、出力は2,3でなければなりません。しかし、出力は2,0です。どうして?なぜ2,3の代わりに出力2,0ですか?
いいえ、 'p'は' char * 'ポインターです。 'char *'ポインタに1を加えることは、 'int *'ポインタに1を加えることと同じではありません。 –
リトルエンディアンマシン。 –
それは私が推測するエンディアンです.....あなたはpを増分し、次のバイトに移動します...そして、あなたのMSBareが最初に格納されているので0です。 – coderredoc