在下面的程序中,这里ptr
已被声明为指向整型指针的指针,并且指定了数组p[]
的基址,该数组已被声明为整型指针数组。假设ptr
包含地址9016
(假设p的起始地址是9016),在ptr
递增之前和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;
}
单独将指针转换为整数类型,然后才减去。 – 2014-10-02 09:40:58