微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的指针.

原文地址:https://www.jb51.cc/c/115198.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐