在第21行后
不理解这个pp为什么从0x61fe00->0x61fe08,怎么增加了8,而*pp只增加了4
希望给个有图形的解释
让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言问题分析: 首先,需要理解指针和指针运算的概念。 指针是一个变量,它可以存储某个变量的内存地址,让我们可以直接操作这个变量。指针运算是对指针进行加减运算,其结果是一个指向另外一个可访问内存的地址。 在代码中,pp是一个指向int类型的指针,其初始值为0x61fe00。当pp++时,pp指向的地址会增加4(因为指向int类型,一个int占4个字节),因此pp的值为0x61fe04。而当*pp++时,先使用*pp访问pp指向的内存,然后pp的值再加4,指向下一个int类型的内存。因此*pp的地址和pp的地址相同,即0x61fe00,但是pp指向下一个int类型的内存,地址为0x61fe04。 回答: 在第21行后,pp指向的地址已经增加了4,指向的是下一个int类型的内存,而不是原来的内存。因此*pp只增加了4,就是访问了下一个int类型的内存。 图示: 代码示例:
int* pp = (int*)0x61fe00;
int a = *pp++; // pp指向0x61fe04,*pp等于访问0x61fe00处的int类型数据
int b = *pp; // pp指向0x61fe04,*pp等于访问0x61fe04处的int类型数据