c – 为什么不同的答案?

前端之家收集整理的这篇文章主要介绍了c – 为什么不同的答案?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下是2个程序

第一

#include<stdio.h>

void main()
{
    int a[5]={1,2,3,4,5};
    int *p;
    p=&a;
    printf("%u %u",p,p+1);
}

第二

#include<stdio.h>

void main()
{
    int a[5]={1,5};
    printf("%u %u",&a,&a+1);
}

现在,在两个程序中.我已经在第一个代码中打印了& a的值,并且直接在第二个代码中打印.

为什么结果不一样?

我得到的答案是.

for first  3219048884  3219048888
for second 3219048884  3219048904

解决方法

& a的类型是int(*)[5].因此& a 1是一个比一个更深入的指针.然而,p的类型是int *,因此p 1是比p更int 1的指针.

猜你在找的C&C++相关文章