小编Wal*_*ter的帖子

指针算术输出错误

在下面的程序中,Here 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;
}
Run Code Online (Sandbox Code Playgroud)

c pointers pointer-arithmetic

2
推荐指数
1
解决办法
138
查看次数

标签 统计

c ×1

pointer-arithmetic ×1

pointers ×1