我正在学习C,我看到了这段代码,但是我看不出它们的区别。有人可以解释一下吗?谢谢。
#include <stdio.h>
int main(int argc, char const *argv[])
{
int addressAsInt = 0x61FF08;
printf("address = %p\n", addressAsInt);
int address2AsInt = 0x61FF14;
printf("address2 = %p\n", address2AsInt);
printf("rest = %d\n", address2AsInt - addressAsInt);
int* address = (int*) 0x61FF08;
printf("address = %p\n", address);
int* address2 = (int*) 0x61FF14;
printf("address2 = %p\n", address2);
printf("rest = %d\n", address2 - address);
return 0;
}
第一个差输出0000000C,第二个差输出00000003。
我了解第一个,但不了解第二个。
最佳答案
第一个操作是两个十六进制之间的简单差异(十六进制为12 = C)。
第二个操作是两个指针之间的区别:它给出了可容纳在两个指针各自目标之间的相同类型元素的数量。