在下面的程序中,這裏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