&array[0]
和&array[2]
分别打印正确的值,它们分别是array [0]和array [2]的地址。但是,当我减去两者时,将打印2
而不是8
,这是两个地址的差。
C标准的哪些相关部分解释了为什么输出是2
而不是8
的原因?
改编自http://fabiensanglard.net/c/index.php
#include <stdio.h>
int main() {
int array[] = {41,1821,12213,1645,20654} ;
int* pointer = array;
printf("%d %d %d %d\n", sizeof array, sizeof pointer, sizeof(int*), sizeof &array[2]);
printf("%ld %ld %ld %ld\n", sizeof array[0], sizeof &array, array[0], &array[0]);
printf("%ld %ld %ld %ld\n", sizeof array[2], sizeof &array, array[2], &array[2]);
printf("%d\n", (&array[2]) - (&array[0]));
}