数组与指针(1)

#include<stdio.h>

int main()

{

    int a[4]={1,2,3,4};

    int *p=(int *)(&a+1);

    printf("%d",*(p-1));

    return 0;

}

答案是4,原因在于&a扫过了整个数组,而不是取数组首地址。如果改成以下形式:


#include<stdio.h>

int main()

{

    int a[4]={1,2,3,4};

    int *p=(int *)(a+1);

    printf("%d",*(p-1));

    return 0;

}

则结果为1。






猜你喜欢

转载自blog.csdn.net/chenlj_1/article/details/78713185