问题描述
- 一个小程序,求解答啊
-
在别人文章里看到的程序
程序的输出结果是什么,why?#include
int main()
{
int a[5] = {1,2,3,4,5};
int p = (int)(&a + 1);printf("%d, %dn", *(a + 1), *(p -1));
}
解决方案
int a[5] = {1,2,3,4,5};
int* p = (int*)(&a + 1);
printf("%d, %dn", *(a + 1), *(p -1));
结果2,5
&a + 1 = a + sizeof a / sizeof int
a+1 = a[1]
解决方案二:
对 a 取地址,是什么东东呢?数组指针,也是一个指针。它加一是如何操作,请这篇博文:数组指针 与 指针数组
输入是:2 5
我猜的,没有执行它。
解决方案三:
这个你没有定义指针,代码不全吧,不能输出
解决方案四:
自己下载个eclipse执行下就知道了。
解决方案五:
为什么一直报 非法的间接寻址 呢!
解决方案六:
看看是不是这样改吧
#include
int main()
{
int a[5] = {1,2,3,4,5};
int p=a+1;
printf("%d,%dn", *(p+1),(p-1));
return 0;
}
输出的结果是3,1
时间: 2024-09-20 19:42:59