繁体   English   中英

谁能解释ptr + 1和ptr [0] +1之间的区别

[英]Can anyone please explain difference between ptr+1 and ptr[0]+1

假设sizeof整数为4字节,sizeof(int *)为8字节,我不明白为什么ptr +1向前移动8字节,而ptr [0] +1向前移动4字节。

int main()
{
    int a[] = {1, 2, 3};
    int *ptr[3]; //array of 3 elements pointed to integer 
    int *b;

    ptr[0] = a;

    printf("a: %lu\n", a);
    printf("a + 1: %lu\n\n", a+1);

    printf("ptr: %lu\n", ptr);
    printf("ptr + 1: %lu\n", ptr+1);

    printf("ptr[0]: %lu\n", ptr[0]);//ptr[0] holds base address of array a
    printf("ptr[1]: %lu\n\n", ptr[0] + 1 );

    printf("&ptr: %lu\n", &ptr);
    printf("&ptr + 1: %lu\n", &ptr+1);
}

如果我正确理解了您的问题,则您有一个指向int的指针数组( int * )。 您希望第二个元素的地址比第一个元素的地址高四个字节,并且您在问为什么不是这样?

如果确实是您的问题,答案是指针的大小不一定与int的大小相同。

在64位编译器上,指针的大小通常为8个字节,而int的大小可能为4个字节。

您可以打印出sizeof(int)sizeof(int *)以清楚地看到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM