c - 调试 C 代码和指针

标签 c pointers

在调试以下两段代码时,第一段将打印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) );
}

最佳答案

在小端系统中,以下是值 257258 在内存中的存储方式:

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/

相关文章:

c++ - 指向基点的指针可以指向派生对象数组吗?

c - 指向字符串的指针数组,发生段错误

c - 使用 char 和 num 扫描输入行

c - 使用指针从 C 中的函数调用数组元素

c - 简单的 'else if' 语句不起作用

c - 指向指针参数变量的指针以及它们如何工作?例如功能(int ** ptr)

c - IA32 到 Y86 汇编代码转换

c - 带阴影的快速 'ball' 像素光栅化例程

c - 在递归中使用 realloc

objective-c - Objective-C 中星号的位置