黑马程序员技术交流社区
标题:
请问以下代码输出什么?
[打印本页]
作者:
a1301155262
时间:
2015-3-24 23:33
标题:
请问以下代码输出什么?
以下代码输出什么?
main() { inta[5]={}; int *ptr=(int*)( a+1);
printf(“%d%d”,*(a+1),*(ptr-1)); }
作者:
waterfoxjie
时间:
2015-3-25 00:13
inta[5]={} 你这里面应该要先赋初值吧 不然没意义的 怎么输都是0的
作者:
hero200521296bj
时间:
2015-3-25 00:16
数组里没有指,都是零吧
作者:
tzp123
时间:
2015-3-25 00:18
等我学习好了再来帮你解答
作者:
sekey1991
时间:
2015-3-25 12:33
int main(void)
{
int a[5] = {};
int * ptr;
ptr = ( a+1);
printf(“%d%d”,*(a+1),*(a));
}
作者:
marswawa
时间:
2015-3-25 12:39
默认为0,没用。
作者:
流风124
时间:
2015-3-25 21:24
楼主你这段代码感觉特别混乱,但是也是可以的,你原来的代码结果是 00 , 看不出效果,我赋了两个值,输出结果是 21,楼主可以参考一下(顺便说一句,楼主原来的程序里,符号有不是英文的,注意一下)
int main()
{
int a[5]={1,2};
int *ptr=(int *)(a+1);//指针指向 a+1
printf("%d%d\n",*(a+1),*(ptr-1));//ptr-1 指向 a+1 前一个地址,即a,所以是a[0]的值1
return 0;
}
作者:
Errors
时间:
2015-3-25 21:56
数组里的值都是零,a + 1是数组的地址加1,指向a[1],a[1]的值也是零
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2