-
1. 如下代码打印的结果是什么? #include <stdio.h> int main() { int intArray[] = {1, 2, 3, 4, 5}; int *p = (int *)(&intArray+1); printf("%d,%d",*(intArray+1),*(p-1)); return 0; } 这里&intArray+1表示intArray数组的后一个地址,即整个数组的末尾地址。由于intArray数组中每个元素都是4字节大小的整数,因此将其转换为指向整型的指针后,p指向的是数组的末尾地址。 接着使用printf函数输出了两个值,分别是*(intArray+1)和*(p-1)。其中,*(intArray+1)表示数组中第二个元素的值,即2;而*(p-1)表示数组中最后一个元素的值,即5。 补充: 数组名表示数组的首元素地址。 &数组名 表示正哥数组的地址。包含了数组的步长。
2. 什么是大端和小端
以低地址存放的高低位字节为标准;
在低地址存放低位字节的设备就是小端。
在低地址存放高位字节的设备就是大端。