黑马程序员技术交流社区

标题: 请问以下代码输出什么? [打印本页]

作者: 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