baidu_25165523
baidu_25165523
采纳率100%
2015-01-08 09:04

一个小程序,求解答啊

已采纳

在别人文章里看到的程序
程序的输出结果是什么,why?

#include
int main()
{
int a[5] = {1,2,3,4,5};
int p = (int)(&a + 1);

printf("%d, %d\n", *(a + 1), *(p -1));

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • mos2046 mos2046 6年前
    int a[5] = {1,2,3,4,5};
    int* p = (int*)(&a + 1);
    printf("%d, %d\n", *(a + 1), *(p -1));
    
    结果2,5
    
    &a + 1 = a + sizeof a / sizeof int
    a+1 = a[1]
    
    点赞 评论 复制链接分享
  • suanmou suanmou 6年前

    看看是不是这样改吧
    #include
    int main()
    {
    int a[5] = {1,2,3,4,5};
    int p=a+1;
    printf("%d,%d\n", *(p+1),
    (p-1));
    return 0;
    }
    输出的结果是3,1

    点赞 评论 复制链接分享
  • laffhhufh 一剑枯荣 6年前

    为什么一直报 非法的间接寻址 呢!

    点赞 评论 复制链接分享
  • waterxcfg304 waterxcfg304 6年前

    自己下载个eclipse执行下就知道了。

    点赞 评论 复制链接分享
  • suanmou suanmou 6年前

    这个你没有定义指针,代码不全吧,不能输出

    点赞 评论 复制链接分享
  • 91program 91program 6年前

    对 a 取地址,是什么东东呢?数组指针,也是一个指针。它加一是如何操作,请这篇博文:数组指针 与 指针数组
    输入是:2 5
    我猜的,没有执行它。

    点赞 评论 复制链接分享