在调试以下两段代码时,第一段将打印1 1
,第二段将打印2 1
,我能得到解释吗?
我确实对指针有一定的了解,但我似乎不明白这一点。
1.
void main()
{
int i = 257;
int *iPtr = &i;
printf("%d %d", *((char*)iPtr), *((char*)iPtr+1) );
}
2.
void main()
{
int i = 258;
int *iPtr = &i;
printf("%d %d", *((char*)iPtr), *((char*)iPtr+1) );
}
最佳答案
在小端系统中,以下是值 257
和 258
在内存中的存储方式:
257 = 0x101
0x01 0x01 0x00 0x00
byte 0, byte 1, byte 2, byte 3
258 = 0x102
0x02 0x01 0x00 0x00
byte 0, byte 1, byte 2, byte 3
关于c - 调试 C 代码和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26083840/