【发布时间】:2014-10-02 08:27:26
【问题描述】:
在下面的程序中,这里的ptr被声明为一个指向整数指针的指针,并分配了数组p[]的基地址,该数组已经被声明为一个整数指针数组。假设ptr在ptr递增之前包含地址9016(假设p的起始地址为9016),在ptr++之后,它将包含值9020(假设int占用4个字节)。
所以ptr-p 应该将输出设为 4,即 (9020-9016=4)。但它给出的输出为 1 。为什么?
#include<stdio.h>
int main()
{
static int a[]={0,1,2,3,4};
static int *p[]={a,a+1,a+2,a+3,a+4};
int **ptr=p;
ptr++;
printf("%d",ptr-p);
return 0;
}
【问题讨论】:
-
将指针分别转换为整数类型,然后再减去。
标签: c pointers pointer-arithmetic