(答案是C)
int a[] = {1,2,3,4,5,};
int *p = a;
int *q = &a[5];
printf("%d", q-p);
当sizeof(int)为4时,以下说法正确的是:
A.
因为第三行的错误不能编译
B.
因为第三行的错误运行时崩溃
C.
输出5
D.
输出20
其实指针并比等于地址,地址只是指针存的一个值,地址没有任何类型,只是一个单纯的值,而指针有类型。所以指针做运算的时候其实会带上类型作为单位。比如,我们拿平常的数组指针用法举例,你的一个int类型的数组指针进行一个加一的操作是不是就跳到了下一个元素的地址,但是两个元素之间的地址差值却是4,,我们对int*的指针做加一操作即可让它地址值加4,这就是指针运算带类型长度的体现。